之前我是用python程式訓練過相應的模型,但是類別比較少,最多也就300個類別左右
現在的需求是:
大概有3萬多個圖片,每個圖片為一類,然后訓練出模型,應用程序中輸入一張新的圖片,找到最相似的圖片
之前的CNN代碼如下
class CNN(nn.Module): # 卷積神經網路cnn
def __init__(self):
super(CNN, self).__init__()
self.conv1 = nn.Sequential( # 一層卷積層 以下REAIZE=(50,25)
nn.Conv2d( # 卷積層,輸入維度(3,REAIZE)
in_channels=3, # 層高度,灰度圖1層,rgb圖片是3層
out_channels=32, # 通過掃描一個區域獲取32個特征(提取的特征多訓練效果好,速度慢)
kernel_size=5, # 掃描區域的寬高像素
stride=1, # 每次卷積移動的像素距離
# padding=(kernel_size-1)/2 if stride=1
padding=2, # 對于掃描區域不足的位置補充2個像素
), # 輸出維度(32, REAIZE)
nn.ReLU(), # 激勵函式,維度(32, REAIZE)
# 池化層,取數值最大的寬高為5(5,5)的區域為特征點,輸出維度(32, 10 ,5)
# 計算方法:當REAIZE=(50,25),輸出為(32,50/5,25/5),即輸出(32,10,5)
nn.MaxPool2d(kernel_size=(5)),
)
self.conv2 = nn.Sequential( # 二層卷積層
nn.Conv2d(32, 64, 5, 1, 2), # 將輸入的32層厚度輸出為64層厚度(64,10,5)
nn.ReLU(),
# 計算方法:(64,10,5),輸出為(64,10/2,5/1),即輸出(64,5,5)
nn.MaxPool2d((2, 1)),
)
self.out = nn.Linear(64 * 5 * 5, 2) # 輸入64*5*5,輸出2 (2為訓練資料的類別數量)
def forward(self, x):
x = self.conv1(x)
x = self.conv2(x)
x = x.view(x.size(0), -1) # 把多維度的tensor展平成一維,x.size(0)指batchsize的值
output = self.out(x)
return output, x
uj5u.com熱心網友回復:
我現在初始設定輸出的分類10萬,第一次訓練300張圖片,生成模型,訓練沒問題后再添加300張圖片,將模型繼續訓練,但是訓練到1萬張圖片的時候遇到了瓶頸,訓練不下去了轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/7000.html
標籤:人工智能技術
下一篇:新人
