成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁 > 知識庫 > 解決pytorch 模型復(fù)制的一些問題

解決pytorch 模型復(fù)制的一些問題

熱門標(biāo)簽:電銷機(jī)器人系統(tǒng)廠家鄭州 阿里電話機(jī)器人對話 螳螂科技外呼系統(tǒng)怎么用 qt百度地圖標(biāo)注 遼寧智能外呼系統(tǒng)需要多少錢 舉辦過冬奧會的城市地圖標(biāo)注 正安縣地圖標(biāo)注app 地圖地圖標(biāo)注有嘆號 400電話申請資格

直接使用

model2=model1

會出現(xiàn)當(dāng)更新model2時,model1的權(quán)重也會更新,這和自己的初始目的不同。

經(jīng)評論指出可以使用:

model2=copy.deepcopy(model1)

來實現(xiàn)深拷貝,手上沒有pytorch環(huán)境,具體還沒測試過,誰測試過可以和我說下有沒有用。

原方法:

所有要使用模型復(fù)制可以使用如下方法。

torch.save(model, "net_params.pkl")
model5=Cnn(3,10)
model5=torch.load('net_params.pkl')

這樣編寫不會影響原始模型的權(quán)重

補(bǔ)充:pytorch模型訓(xùn)練流程中遇到的一些坑(持續(xù)更新)

要訓(xùn)練一個模型,主要分成幾個部分,如下。

數(shù)據(jù)預(yù)處理

入門的話肯定是拿 MNIST 手寫數(shù)據(jù)集先練習(xí)。

pytorch 中有幫助我們制作數(shù)據(jù)生成器的模塊,其中有 Dataset、TensorDataset、DataLoader 等類可以來創(chuàng)建數(shù)據(jù)入口。

之前在 tensorflow 中可以用 dataset.from_generator() 的形式,pytorch 中也類似,目前我了解到的有兩種方法可以實現(xiàn)。

第一種就繼承 pytorch 定義的 dataset,改寫其中的方法即可。如下,就獲得了一個 DataLoader 生成器。

class MyDataset(Dataset):
 def __init__(self, data, labels):
 self.data = data
 self.labels = labels
 def __getitem__(self, index):
 return self.data[index], self.labels[index]
 def __len__(self):
 return len(self.labels)
 
train_dataset = MyDataset(train_data, train_label)
train_loader = DataLoader(dataset = train_dataset,
 batch_size = 1,
 shuffle = True)

第二種就是轉(zhuǎn)換,先把我們準(zhǔn)備好的數(shù)據(jù)轉(zhuǎn)化成 pytorch 的變量(或者是 Tensor),然后傳入 TensorDataset,再構(gòu)造 DataLoader。

X = torch.from_numpy(train_data).float()
Y = torch.from_numpy(train_label).float()
train_dataset = TensorDataset(X, Y)
 
train_loader = DataLoader(dataset = train_dataset,
 batch_size = 1,
 shuffle = True)
 #num_workers = 2)

模型定義

class Net(nn.Module):
 
 def __init__(self):
 super(Net, self).__init__()
 self.conv1 = nn.Conv2d(1, 6, 3)
 self.conv2 = nn.Conv2d(6 ,16, 3)
 
 self.fc1 = nn.Linear(400, 120)
 self.fc2 = nn.Linear(120, 84)
 self.fc3 = nn.Linear(84, 10)
 
 def forward(self, x):
 relu = F.relu(self.conv1(x))
 x = F.max_pool2d(relu, (2, 2))
 x = F.max_pool2d(F.relu(self.conv2(x)), 2)
 x = x.view(-1, self.num_flat_features(x))
 x = F.relu(self.fc1(x))
 x = F.relu(self.fc2(x))
 x = self.fc3(x)
 
 return x 
 def num_flat_features(self, x):
 size = x.size()[1:] #除了batch_size之外的維度
 num_features = 1
 for s in size:
 num_features *= s
 return num_features

訓(xùn)練模型那么肯定要先定義一個網(wǎng)絡(luò)結(jié)構(gòu),如上定義一個前向傳播網(wǎng)絡(luò)。里面包含了卷積層、全連接層、最大池化層和 relu 非線性激活層(名字我自己取的)以及一個 view 展開,把一個多維的特征圖平展成一維的。

其中nn.Conv2d(in_channels, out_channels, kernel_size),第一個參數(shù)是輸入的深度,第二是輸出的深度,第三是卷積核的尺寸。

F.max_pool2d(input, (pool_size, pool_size)),第二個參數(shù)是池話

nn.Linear(in_features, out_features)

x.view是平展的操作,不過實際上相當(dāng)于 numpy 的 reshape,需要計算轉(zhuǎn)換后的尺寸。

損失函數(shù)定義

import torch.optim as optim
 
criterion = nn.CrossEntropyLoss()
optimizer = optim.SGD(net.parameters(), lr=0.001, momentum=0.9)

模型定義完之后,意味著給出輸入,就可以得到輸出的結(jié)果。那么就來比較 outputs 和 targets 之間的區(qū)別,那么就需要用到損失函數(shù)來描述。

訓(xùn)練網(wǎng)絡(luò)

for epoch in range(2): # loop over the dataset multiple times
 
 running_loss = 0.0
 for i, data in enumerate(trainloader, 0):
 # get the inputs; data is a list of [inputs, labels]
 inputs, labels = data
 
 # zero the parameter gradients
 optimizer.zero_grad()
 
 # forward + backward + optimize
 outputs = net(inputs)
 loss = criterion(outputs, labels)
 loss.backward()
 optimizer.step()
 
 # print statistics
 running_loss += loss.item()
 if i % 2000 == 1999: # print every 2000 mini-batches
  print('[%d, %5d] loss: %.3f' %
   (epoch + 1, i + 1, running_loss / 2000))
  running_loss = 0.0
 
print('Finished Training')

以上的代碼是官方教程中給出來的,我們要做的就是學(xué)習(xí)他的思路。

1.首先是 epoch 的數(shù)量為 2,每個 epoch 都會歷遍一次整個訓(xùn)練集。在每個 epoch 內(nèi)累積統(tǒng)計 running_loss,每 2000 個 batch 數(shù)據(jù)計算一次損失的平均值,然后 print 再重新將 running_loss 置為 0。

2.然后分 mini-batch 進(jìn)行訓(xùn)練,在每個計算每個 mini-batch 的損失之前,都會將優(yōu)化器 optimizer 中的梯度清空,防止不同 mini-batch 的梯度被累加到一起。更新分成兩步:第一步計算損失函數(shù),然后把總的損失分配到各個層中,即 loss.backward(),然后就使用優(yōu)化器更新權(quán)重,即 optimizer.step()。

保存模型

PATH = '...'
torch.save(net.state_dict(), PATH)

爬坑總結(jié)

總的來說流程就是上面那幾步,但自己做的時候就遇到了挺多問題,最主要是對于其中張量傳播過程中的要求不清楚,導(dǎo)致出了不少錯誤。

首先是輸入的數(shù)據(jù),pytorch 默認(rèn)圖片的 batch 數(shù)據(jù)的結(jié)構(gòu)是(BATCH_SIZE, CHANNELS, IMG_H, IMG_W),所以要在生成數(shù)據(jù)時做一些調(diào)整,滿足這種 BCHW 的規(guī)則。

會經(jīng)常出現(xiàn)一些某個矩陣或者張量要求的數(shù)據(jù),例如 “RuntimeError: Expected object of scalar type Double but got scalar type Float for argument #2 ‘mat2'” 等錯誤信息。

可以使用 x.double(),y.float(),z.long() 等方式轉(zhuǎn)換成他要求的格式。

RuntimeError: multi-target not supported。這個錯誤出現(xiàn)在損失函數(shù)那個地方,對于分類問題肯定是優(yōu)先考慮交叉熵。

criterion = nn.CrossEntropyLoss()
loss = criterion(outputs, labels.long())#報錯的地方

當(dāng)我batch-size=1時這個地方不會報錯,但是當(dāng)batch-size>1時就會報錯。

查了別人的代碼,大家基本都是和官方教程里面寫的一樣,使用官方的 mnist 數(shù)據(jù)接口,代碼如下。一開始我是不愿意的,因為那樣子意味著可能數(shù)據(jù)格式被封裝起來看不見,但是自己折騰成本比較高,所以還是試了,真香!

train_dataset = datasets.MNIST(root='./data/',
    train=True,
    transform=transforms.ToTensor(),
    download=True)
train_loader = DataLoader(dataset = train_dataset,
  batch_size = 4,
  shuffle = True)

打印了一下從生成器中獲得數(shù)據(jù),看一下 size,發(fā)現(xiàn)果然和我自己寫的不同。當(dāng) batch_size=4 時,數(shù)據(jù) data.size() 都是4*1*28*28,這個是相同的;但是 labels.size() 是不同的,我寫的是 one_hot 向量所以是 4*10,但它的是 4。

直接打印 labels 看看,果然,是單個指,例如 tensor([3, 2, 6, 2]) 這樣。

不過模型的 outputs 依然是 4*10,看來是 nn.CrossEntropyLoss() 這個函數(shù)自己會做計算,所以他才會報錯說 multi-target not supported,因為 lables.size() 不對,原本只有一個數(shù)字,但現(xiàn)在是10個數(shù)字,相當(dāng)于被分配了10個屬性,自然就報錯啦。

所以稍微修改了自己寫的生成器之后,就沒問題了。

不過,如果想要更自由的調(diào)用數(shù)據(jù),還是需要對對象進(jìn)行一些方法的重載,使用 pytoch 定義的 DataLoader,用 enumerate,就會把所有的數(shù)據(jù)歷遍一次,如果使用 iter() 得到一個可迭代對象之后 next(),并不可以像 tensorflow 那樣子生成訓(xùn)練數(shù)據(jù)。

例如說,如果使用如上的形式,DataLoader 得到的是一個生成器,python 中的生成器對象主要有 __next__ 和 __iter__ 等魔術(shù)方法決定。

__iter__ 方法使得實例可以如下調(diào)用,可以得到一個可迭代對象,iterable,但是如果不加也沒關(guān)系,因為更重要的是 __next__ 類方法。

如下自己寫了 __next__ 方法之后就可以看到,原本會出現(xiàn)越界的現(xiàn)象不見了,可以循環(huán)的歷遍數(shù)據(jù),當(dāng)然也可以想被注釋的那部分一樣,拋出 StopIteration 來終止。

a = A()
a_iter = iter(a)
class A():
 def __init__(self):
 self.list = [1,2,3]
 self.index = 0
 #def __getitem__(self, index):
 # return self.list[i]
 #def __iter__(self):
 # return self
 def __next__(self):
 #for i in range():
 if self.index >= len(self.list):
 #raise StopIteration 
 self.index = self.index%len(self.list)
 result = self.list[self.index]
 self.index += 1
 return result 
b = A() 
for i in range(20):
 print(next(b))
 

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。

您可能感興趣的文章:
  • pytorch 狀態(tài)字典:state_dict使用詳解
  • 解決pytorch 保存模型遇到的問題
  • 解決pytorch 的state_dict()拷貝問題

標(biāo)簽:濟(jì)源 阜新 昭通 淘寶好評回訪 隨州 信陽 興安盟 合肥

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《解決pytorch 模型復(fù)制的一些問題》,本文關(guān)鍵詞  解決,pytorch,模型,復(fù)制,的,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《解決pytorch 模型復(fù)制的一些問題》相關(guān)的同類信息!
  • 本頁收集關(guān)于解決pytorch 模型復(fù)制的一些問題的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    欧美综合在线视频| 欧美孕妇性xxxⅹ精品hd| 日韩成人免费在线视频| 国内精品福利视频| 久久综合电影一区| a级黄色片网站| 欧美xxx在线| 亚洲欧洲xxxx| 国产成人三级一区二区在线观看一| 国产九九在线观看| 日韩电影在线观看永久视频免费网站| 亚洲欧美日本免费| 免费成人深夜夜行网站视频| 四虎成人永久免费视频| 一区二区久久久久| 国产日韩欧美在线观看视频| 久久精品电影一区二区| 91福利视频在线| 欧美在线免费视频| 自拍偷拍一区二区三区| 国产欧美精品在线播放| 日本高清视频免费在线观看| 99久免费精品视频在线观78| 久久久久99精品国产片| 国产一区福利视频| 婷婷亚洲五月| 少妇精品在线| 女人成午夜大片7777在线| siro系绝美精品系列| 穿情趣内衣被c到高潮视频| 成人av高清在线| 国产精品免费无遮挡无码永久视频| 日本精品人妻无码77777| 成人免费一区二区三区视频网站| 宅男午夜在线| 亚洲国产天堂av| 国产一级大片免费看| 成人黄色免费视频| 欧美三级不卡| 精品无码久久久久成人漫画| 亚洲一区二区三区| 国产精品第四页| 成人精品视频一区二区三区尤物| 国产一区二区三区高清视频| 91久久极品少妇xxxxⅹ软件| 久久久久久美女精品| 亚洲美女电影在线| 可以免费观看av毛片| 精品一区二区三区三区| hs网站在线观看| 精品国产免费第一区二区| 欧洲亚洲免费视频| 51ⅴ精品国产91久久久久久| 超碰在线97免费| 欧美顶级大胆免费视频| 91精品国产沙发| 在线免费黄网| 91国内产香蕉| 国产一级又黄| av一区二区三区在线| 亚洲宅男一区| 大胆高清日本a视频| 尤物免费看在线视频| 一区二区三区不卡在线| 国产一区二区三区综合| 天堂在线精品视频| 欧美高清www午色夜在线视频| 亚洲av综合色区无码一二三区| 久久久精品五月天| 中文字幕人成高清视频| 亚洲人av在线| 欧美一区二区三区免费看| 国产精品成人a在线观看| 亚洲精品v欧美精品v日韩精品| 日韩少妇视频| 九色国产在线观看| 91黄色在线视频| 在线免费观看a级片| 一级片视频播放| 欧美激情综合五月色丁香| 国产精品久久久久久久精| 精品久久久久久久久久久久久久| 天天综合色天天| www国产精品内射老熟女| 国产乱码精品一区二区三区四区| 免费久久精品| 香蕉视频免费网站| 中文字幕av亚洲精品一部二部| 欧美性xxxx禁忌| segui88久久综合| 亚洲欧美色婷婷| 青青草社区视频| 国产精品第八页| 麻豆精品免费视频入口| 国产美女精品视频免费观看| 日韩.欧美.亚洲| 精品国产aⅴ麻豆| 国产精品成人自拍| 黄色片网站在线播放| 亚洲大胆在线| 久草精品电影| 国产ts人妖一区二区三区| 成人午夜伦理影院| 国产欧美精品一区aⅴ影院| 亚洲日本丝袜连裤袜办公室| 日韩成人午夜影院| 亚洲黄色免费电影| 四虎成人精品一区二区免费网站| 欧美行性性性o00x| 国产精品99久久99久久久| 综合激情丁香| 国产精品久久久久久久免费| 黄色一区二区在线| 开心激情综合| 97精品一区二区视频在线观看| 亚洲国产中文字幕久久网| 97人妻精品一区二区三区| 黄色在线播放| 久久精品久久久精品美女| 国模套图日韩精品一区二区| 成人免费毛片片v| 日韩精品成人一区二区三区| 亚洲GV成人无码久久精品| 九九热精品视频| 亚洲欧美精品中文第三| 国产精品无码一本二本三本色| 免费短视频成人日韩| 日韩欧美在线不卡| 国产精品久久久久无码av色戒| 精品日本高清在线播放| 国产精品99久久久久久www| 999www成人| 欧美性孕妇孕交| 在线精品一区二区| a√中文在线观看| 国产欧美日韩视频一区二区| 日韩情爱电影在线观看| 91文字幕巨乱亚洲香蕉| 日韩欧美中文一区二区| 成人av无码一区二区三区| 高清不卡一区二区三区| 国产51人人成人人人人爽色哟哟| 91caopron| 亚洲精品乱码久久久久久黑人| 亚洲欧美一区二区不卡| 欧美日韩电影一区二区三区| 天堂久久久久久| 一区二区av| 粉嫩高潮美女一区二区三区| 午夜在线视频播放| 一本色道久久综合亚洲二区三区| 亚洲最大福利视频| 成人午夜影院在线观看| 欧美精品99久久| 一个人免费视频www在线观看| 日韩av毛片在线观看| 欧美日韩午夜爽爽| 国产色综合一区二区三区| 欧美日韩国产色综合一二三四| 91蜜桃臀久久一区二区| 欧美有码在线观看视频| 写真福利片hd在线播放| 日韩av不卡一区二区| 91官网在线免费观看| 999久久久久| 99re热视频这里只精品| 国产精品16p| 国产精品综合二区| 日本成人xxx| 日本免费不卡| 性xxxxx| 四虎成年永久免费网站| 国产真实乱子伦精品视频| 不用播放器的免费av| 亚洲一级生活片| 三级网站免费观看| 国产精品羞羞答答xxdd| 午夜影院免费在线观看| 91在线视频播放| 婷婷夜色潮精品综合在线| 国产精品扒开腿做爽爽爽的视频| 欧美猛烈性xbxbxbxb| 国产精品视频久久久久久久| 欧美国产乱子伦| 91免费国产视频| 青青色在线视频| 好吊色视频988gao在线观看| 国产精品久久久久蜜臀| 免费看黄资源大全高清| 免费在线黄色电影| 黄色毛片网站| 翔田千里亚洲一二三区| 老牛影视av一区二区在线观看| 欧美激情国产精品免费| 秋霞av国产精品一区| 国产精品自在线拍| 国产免费一区二区三区最新6| 亚洲天堂视频在线观看| 免费羞羞视频网站| 久久草视频在线| 欧美大黑帍在线播放| 能在线观看的av| 日韩av在线网页| 欧美性猛交xxxxx少妇| 午夜精品视频| 欧美黄色一级| 97久久超碰福利国产精品…| 丁香婷婷自拍| 伊人久久久久久久久久久久久| 公交车上扒开嫩j挺进去| 亚洲午夜国产成人av电影男同| rebdb初裸写真在线观看| 日韩成人精品一区二区| av观看在线免费| 免费人成自慰网站| 国产福利微拍精品一区二区| 91精品福利在线一区二区三区| 国产大片在线观看| 福利片在线一区二区| 正在播放国产一区| 中文一区二区三区四区| 色综合一个色综合| 污污视频在线看| 日韩av免费大片| 精品少妇一区二区三区免费观| 欧美一区二区三区成人| 中文字幕在线观看日韩| 国产欧美精品日韩精品| 菠萝蜜视频在线观看www入口| 国产女主播一区二区三区| 亚洲一区二区欧美日韩| 免费看国产精品一二区视频| 色欲av无码一区二区人妻| 精品一区二区三区蜜桃在线| 亚洲欧美综合自拍| 国产a级片视频| 精品国产aⅴ一区二区三区东京热| 精品影片一区二区入口| 免费电影一区| 最近中文字幕av免费高清| 99久久婷婷国产一区二区三区| 乱一区二区三区在线播放| 中文字幕久久久久| 蜜桃麻豆91| 欧美精品久久久久久久久久丰满| 日本不卡不卡| 亚洲毛片aa| 91麻豆精品国产91久久久更新时间| 这里只有视频精品| 嗯用力啊快一点好舒服小柔久久| 亚洲精品婷婷| 91制片厂免费观看| 欧洲美一区二区三区亚洲| 超碰在线免费观看97| 国产精品欧美一区二区三区奶水| 性欧美大战久久久久久久久| 日韩精品免费一区二区在线观看| 国产日韩欧美在线播放不卡| 国产黄a三级三级三级av在线看| 欧美日韩国产三区| 日本乱人伦一区| 中文字幕无码日韩专区免费| 七七婷婷婷婷精品国产| 日韩av在线网址| 97国产精品人人爽人人做| 五月婷婷综合激情网| 国产精品网友自拍| 韩日一区二区三区| 极品白嫩丰满美女无套| 日本在线观看不卡视频| 久久国产精品第一页| 一区高清视频| 日韩av免费在线播放| 久久99精品久久久久婷婷| 97国产精品免费视频| 中文字幕中文字幕一区二区| 亚洲国产精品无码久久久久高潮| 国产精品自产拍在线观看中文| 一级欧美一级日韩| 亚洲a一区二区| 僵尸世界大战2 在线播放| 亚洲欧洲一区二区三区| 激情五月色综合国产精品| 亚洲最大最好的私人影剧院| 一区二区三区亚洲视频| av官网在线| 国产调教视频在线观看| 国产精品一区二区你懂的| 欧美自拍偷拍一区二区| 欧美精品日韩一本| 中文字幕日韩一区| 9久久9毛片又大又硬又粗| 97超碰在线免费观看| 精品国产网站在线观看| 美女毛片一区二区三区四区最新中文字幕亚洲| 男人天堂手机在线视频| 精品国产福利一区二区在线| 一本久道久久综合婷婷鲸鱼| 成人免费看黄网址| 日韩有码视频在线| 欧美女v视频| 久久精品一级| 欧美日韩性视频一区二区三区| 91 com成人网| 国产成人无码一区二区在线观看| 亚洲va欧美va国产综合久久| 久久久9色精品国产一区二区三区| 国产精品久久久久久久久久辛辛| avtt久久| 欧美中文字幕在线观看视频| 中文字幕先锋av影音资源网| 91精品国产综合久久久久久久久久| 宅男在线观看免费高清网站| 嘿咻视频在线看| 美女视频网站黄色亚洲| 欧美午夜一区二区福利视频| 在线亚洲一区二区| 一二三四社区在线视频6| 日本色综合中文字幕| av毛片久久久久**hd| 精品国产无码AV| 亚洲最大色综合成人av| 97人妻天天摸天天爽天天| 国a精品视频大全| 国产老女人精品毛片久久| 91超碰rencao97精品| 久久精品99久久久| 99精品视频免费全部在线|