日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Expected more than 1 value per channel when training, got input size torch.Size([1, **])

發布時間:2023/12/8 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Expected more than 1 value per channel when training, got input size torch.Size([1, **]) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

出現這種問題大概有兩種情況

如果上面步驟三還沒解決問題

原因分析


先定位下問題?

出現這種問題大概有兩種情況

第一種情況是訓練時候出現,另一種是測試模型的時候出現

?

出現這種問題一般是你輸入的數據只有一張圖片例如 [1,3,256,256]??

步驟1 你試下改成 [2,3,256,256]? 能否解決(如果無法加,請看下一個步驟),如果你是在訓練模型,看步驟2? 如果你是在測試模型,看步驟3?

步驟2 如果你是在訓練模型,在獲取數據集時,將DataLoader中drop_last設置為True?把不夠一個批次的數據丟棄。

步驟3? 如果你是在測試模型,出現這種問題一般就是因為,你忘記加model.eval()

?

如果上面步驟三還沒解決問題

一般是你模型定義出現問題

步驟4 如果使用了model.eval()還沒有用,那么請你檢查下你模型里面的定義,是不是把一些模塊在forward方法里面定義,而不是都是在init方法里面定義

我的情況是這樣子

錯誤代碼

class _ASPP(nn.Module):#剩下代碼省略def assp(x_s4,in_channel, out_channel,atrous_rates=[6, 12, 18]):# ch = [64 * 2 ** p for p in range(6)]# atrous_rates = [6, 12, 18]# atrous_rates = [1, 2, 3]#_ASPP 是一個Module的繼承子類_assp = _ASPP(in_channel, out_channel, atrous_rates)return _assp(x_s4)class TEST_MODEL(nn.Module):def __init__(self, channel=32):super(TEST_MODEL, self).__init__()self.resnet = ResNet50()def forward(self, x):X = assp(X, X.shape[1], X.shape[1], atrous_rates=[3, 5, 7])

?

正確代碼

def assp(x_s4,in_channel, out_channel,atrous_rates=[6, 12, 18]):# ch = [64 * 2 ** p for p in range(6)]# atrous_rates = [6, 12, 18]# atrous_rates = [1, 2, 3]return _assp(x_s4)class TEST_MODEL(nn.Module):def __init__(self, channel=32):super(TEST_MODEL, self).__init__()self.resnet = ResNet50() # 在init中定義好你引用的模塊#定義好你的 in_channel out_channelself.assp = _ASPP(in_channel, out_channel, atrous_rates=[3, 5, 7])def forward(self, x):X = self.assp(x)

?

原因分析

1、_ASPP 是一個Module的繼承子類,如果要在一個模型里面用這個module,那么必須在Init里面定義,這樣子你使用model.eval()才能夠對你定義的模型起作用,否則是無效的

2、因為沒有加 model.eval() 導致 BatchNorm沒有關,而BatchNorm 操作需要多于一個數據計算平均值,因此造成該錯誤。

總結

以上是生活随笔為你收集整理的Expected more than 1 value per channel when training, got input size torch.Size([1, **])的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。