Входные данные не соответствуют типу выходного тензора ⇐ Python
-
Anonymous
Входные данные не соответствуют типу выходного тензора
Сетевая модель yolov5 изменена, а уровень Focus в yolo заменен сетью ENet. Но мы получаем следующую ошибку: RuntimeError: Тип ввода (torch.cuda.FloatTensor) и тип веса (torch.cuda.HalfTensor) ) должно быть так же., не знаю причину?
Решение, найденное в Интернете, — преобразовать тип ввода в тип GPU. Но файлов проекта слишком много, не знаете, куда добавить? например:
device = torch.device('cuda:0' if torch.cuda.is_available() else 'cpu') входы = inputs.to(устройство) Ошибка начинается, когда параметр x присваивается параметру main. Разве это невозможно в Python?
класс Узкое место(nn.Module): def __init__(self, каналы, Internal_ratio=4, kernel_size=3, дополнение=0, расширение=1, асимметричный = Ложь, dropout_prob = 0, смещение = Ложь, relu = Истина): super(Узкое место, self).__init__() Internal_channels=каналы//internal_ratio self.ext_conv1=nn.Sequential( nn.Conv2d(каналы,internal_channels,kernel_size=1,шаг=1,смещение=смещение), nn.BatchNorm2d(внутренние_каналы), активация()) self.ext_conv2=nn.Sequential( nn.Conv2d(внутренние_каналы, внутренние_каналы, размер_ядра=размер_ядра, шаг = 1, дополнение = дополнение, расширение = расширение, смещение = смещение), nn.BatchNorm2d(внутренние_каналы), активация()) self.ext_conv3=nn.Sequential( nn.Conv2d(internal_channels,channels,kernel_size=1,stride=1,bias=bias), nn.BatchNorm2d(каналы), активация()) self.ext_regul=nn.Dropout2d(p=dropout_prob) self.out_activation=активация() защита вперед (сам, x): основной = х #print(тип(x)) #print("==========") ext=self.ext_conv1(x) ext=self.ext_conv2(ext) ext=self.ext_conv3(ext) ext=self.ext_regul(ext) выход=основной+добавочный return self.out_activation(out)
Сетевая модель yolov5 изменена, а уровень Focus в yolo заменен сетью ENet. Но мы получаем следующую ошибку: RuntimeError: Тип ввода (torch.cuda.FloatTensor) и тип веса (torch.cuda.HalfTensor) ) должно быть так же., не знаю причину?
Решение, найденное в Интернете, — преобразовать тип ввода в тип GPU. Но файлов проекта слишком много, не знаете, куда добавить? например:
device = torch.device('cuda:0' if torch.cuda.is_available() else 'cpu') входы = inputs.to(устройство) Ошибка начинается, когда параметр x присваивается параметру main. Разве это невозможно в Python?
класс Узкое место(nn.Module): def __init__(self, каналы, Internal_ratio=4, kernel_size=3, дополнение=0, расширение=1, асимметричный = Ложь, dropout_prob = 0, смещение = Ложь, relu = Истина): super(Узкое место, self).__init__() Internal_channels=каналы//internal_ratio self.ext_conv1=nn.Sequential( nn.Conv2d(каналы,internal_channels,kernel_size=1,шаг=1,смещение=смещение), nn.BatchNorm2d(внутренние_каналы), активация()) self.ext_conv2=nn.Sequential( nn.Conv2d(внутренние_каналы, внутренние_каналы, размер_ядра=размер_ядра, шаг = 1, дополнение = дополнение, расширение = расширение, смещение = смещение), nn.BatchNorm2d(внутренние_каналы), активация()) self.ext_conv3=nn.Sequential( nn.Conv2d(internal_channels,channels,kernel_size=1,stride=1,bias=bias), nn.BatchNorm2d(каналы), активация()) self.ext_regul=nn.Dropout2d(p=dropout_prob) self.out_activation=активация() защита вперед (сам, x): основной = х #print(тип(x)) #print("==========") ext=self.ext_conv1(x) ext=self.ext_conv2(ext) ext=self.ext_conv3(ext) ext=self.ext_regul(ext) выход=основной+добавочный return self.out_activation(out)
Мобильная версия