午夜视频免费看_日韩三级电影网站_国产精品久久一级_亚洲一级在线播放_人妻体内射精一区二区三区_91夜夜揉人人捏人人添红杏_91福利在线导航_国产又粗又猛又黄又爽无遮挡_欧美日韩一区在线播放_中文字幕一区二区三区四区不卡 _日日夜夜精品视频免费观看_欧美韩日一区二区三区

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

解決pytorch 模型復制的一些問題

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

直接使用

model2=model1

會出現當更新model2時,model1的權重也會更新,這和自己的初始目的不同。

經評論指出可以使用:

model2=copy.deepcopy(model1)

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

原方法:

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

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

這樣編寫不會影響原始模型的權重

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

要訓練一個模型,主要分成幾個部分,如下。

數據預處理

入門的話肯定是拿 MNIST 手寫數據集先練習。

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

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

第一種就繼承 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)

第二種就是轉換,先把我們準備好的數據轉化成 pytorch 的變量(或者是 Tensor),然后傳入 TensorDataset,再構造 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

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

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

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

nn.Linear(in_features, out_features)

x.view是平展的操作,不過實際上相當于 numpy 的 reshape,需要計算轉換后的尺寸。

損失函數定義

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

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

訓練網絡

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')

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

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

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

保存模型

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

爬坑總結

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

首先是輸入的數據,pytorch 默認圖片的 batch 數據的結構是(BATCH_SIZE, CHANNELS, IMG_H, IMG_W),所以要在生成數據時做一些調整,滿足這種 BCHW 的規則。

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

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

RuntimeError: multi-target not supported。這個錯誤出現在損失函數那個地方,對于分類問題肯定是優先考慮交叉熵。

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

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

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

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

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

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

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

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

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

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

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

如下自己寫了 __next__ 方法之后就可以看到,原本會出現越界的現象不見了,可以循環的歷遍數據,當然也可以想被注釋的那部分一樣,拋出 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))
 

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

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

標簽:濟源 阜新 昭通 淘寶好評回訪 隨州 信陽 興安盟 合肥

巨人網絡通訊聲明:本文標題《解決pytorch 模型復制的一些問題》,本文關鍵詞  解決,pytorch,模型,復制,的,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《解決pytorch 模型復制的一些問題》相關的同類信息!
  • 本頁收集關于解決pytorch 模型復制的一些問題的相關信息資訊供網民參考!
  • 推薦文章
    成人免费电影视频| 中文字幕一二区| 亚洲av片不卡无码久久| 国产一级特黄a高潮片| 熟妇人妻av无码一区二区三区| 国产成人精品免费在线| 亚洲人一二三区| 国产99视频在线| 精品无码m3u8在线观看| 国产欧美视频一区| 中文字幕乱码人妻综合二区三区| 免费的av在线| 亚洲图中文字幕| 中文字幕在线不卡国产视频| 欧美高清视频不卡网| 成人免费在线观看入口| 久久久91精品国产一区二区精品| 波多野结衣精品在线| 中文字幕在线观看2018| 午夜激情福利网| 一区二区精品视频在线观看| 亚洲视频一区在线| 中文字幕欧美日韩va免费视频| 精品麻豆av| 男女激烈动态图| 久久久久网址| 久久久久久精| 人人妻人人澡人人爽欧美一区双 | 国内自拍第二页| 久久久久久久久久久久久久久久久 | 亚洲成年人在线| 国产视频精品久久久| 久久一区二区三区av| 91国产丝袜在线播放| 国产成人精品免费视频| av免费观看久久| 日韩在线欧美在线国产在线| 成人av片在线观看| 国产一级久久久| 亚洲精品中文字幕在线播放| 国产精品一二三区在线观看| 97精品在线播放| 又大又长粗又爽又黄少妇视频| 中国一级特黄录像播放| 成人激情综合网| 欧美日韩免费一区二区三区 | 免费一级特黄3大片视频| 性欧美大战久久久久久久| 成人在线短视频| 美女黄色免费看| 国产第一页精品| 亚洲黄色一级大片| 99久久久免费精品国产一区二区| 一本到高清视频免费精品| 日韩视频永久免费观看| 亚洲综合国产精品| 欧美 日韩 国产精品| 中文字幕日韩综合| 欧产日产国产v| 日本韩国在线观看| 国产精品丝袜久久久久久app| 9191国产精品| 久久精品国产欧美亚洲人人爽| 成人午夜激情免费视频| 日本精品免费| 亚洲视频在线观看一区二区三区| av女人的天堂| 天堂在线观看免费视频| 亚洲不卡视频在线观看| 国产91丝袜美女在线播放| 亚洲精品久久一区二区三区777 | 91久久精品一区二区三| 欧美午夜女人视频在线| 一区二区三区视频在线观看| 亚洲视频一区二区在线| 精品视频资源站| 69久久99精品久久久久婷婷 | 四季av一区二区三区| 午夜国产一区二区三区| 亚洲の无码国产の无码步美| 18禁网站免费无遮挡无码中文 | 精品久久久一区二区| 国产精品538一区二区在线| 美国黄色小视频| 在线观看免费视频高清游戏推荐| 亚洲一区美女| 国产三级精品三级在线| 杨幂毛片午夜性生毛片 | 69xxxx国产| 黄色av网址在线| 亚洲黄色片视频| 欧美黄色aaa| 北条麻妃69av| 制服国产精品| 国产精品久久一区二区三区| 欧美另类精品xxxx孕妇| 国产精品美女久久久免费| 2022亚洲天堂| 在线观看免费观看在线| 欧美视频在线免费| 久久99精品久久久久久秒播放器 | 91精品一区二区| 亚洲成色www.777999| 青青青在线免费观看| 无码国产精品高潮久久99| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 国产一区二区不卡老阿姨| 神马一区二区三区| 亚洲人午夜射精精品日韩| 人妻91麻豆一区二区三区| 国产喂奶挤奶一区二区三区| 亚洲一二三在线| 亚洲xxxxx| 亚洲AV成人精品| 久久国产欧美| 九九九久久国产免费| 逼特逼视频在线观看| 亚洲免费国产视频| 最近2019年好看中文字幕视频 | 91久久精品一区二区| 性欧美在线看片a免费观看| 亚洲国产精品影视| 亚洲伦理一区二区三区| 久久精子c满五个校花| 精品国内二区三区| 精品偷拍各种wc美女嘘嘘| 欧美大片网站在线观看| 国产日韩中文字幕在线| 少妇精品久久久久久久久久| 中国一级片在线观看| 中文字幕永久视频| 国产精品久久久久久久久图文区| 亚洲精品女av网站| 日韩av一区二区在线播放| 国产女人aaa级久久久级| 亚洲午夜激情网站| 亚洲www啪成人一区二区麻豆| 亚洲国产第一页| 69久久夜色精品国产69蝌蚪网| 中文字幕亚洲欧美| 成人免费视频在线观看超级碰| 日韩av一级大片| xxxxwww一片| 中文字幕一区二区久久人妻| 天天干,天天操,天天射| 久久精品亚洲乱码伦伦中文 | 欧美日韩亚洲国产另类| 破处女黄色一级片| 一级片在线免费观看视频| 国产小视频免费观看| 久久精品国产秦先生| 亚洲免费在线视频| 一区二区三区中文字幕| 精品对白一区国产伦| 欧美福利视频网站| 久久久影院一区二区三区| 全国精品久久少妇| 一区二区三区在线免费| 国产成人精品视频ⅴa片软件竹菊| 最近日韩中文字幕| 成人免费直播live| 国产视频九色蝌蚪| 999精品视频在线观看播放| 亚洲高清在线观看视频| 精品国产成人在线| 日韩精品中文字幕在线| 99热在线播放| 亚洲综合20p| 国产又粗又猛又黄又爽| 国产在线精品国自产拍免费| 久久中文精品视频| 国产欧美精品aaaaaa片| 国产乱国产乱老熟| 日韩一级高清毛片| 久热精品在线视频| 97久久人人超碰caoprom欧美| www.国产视频.com| 91在线视频国产| 91久久奴性调教| 国产精品一区二区三区乱码| 欧美激情一区二区三区在线视频观看| 久久久久国产精品无码免费看| 亚洲日本在线看| 综合久久国产| 国产精品91xxx| 99视频在线| 国产一区二区波多野结衣| 久久av中文字幕| 久久久久亚洲AV成人无在| 在线中文字幕一区| 欧美精品第三页| 亚洲男同性视频| 欧美性受xxxx黑人猛交88| 成人av先锋影音| 久久精品中文字幕一区二区三区 | 丰满肉嫩西川结衣av| 欧美xxxx综合视频| 麻豆疯狂做受xxxx高潮视频| 日韩欧美一区二区不卡| 精品国产av色一区二区深夜久久| 成人欧美一区二区三区1314 | 一本色道久久88综合亚洲精品ⅰ| 伊人情人网综合| 91黑人精品一区二区三区| 色综合久久久久久久| 久久亚洲免费| 亚洲精品无码久久久久| 亚洲国产欧美久久| 欧洲亚洲一区| 国产美女www| 亚洲18色成人| 欧美一区第一页| 中文字幕免费在线播放| 91原创在线视频| 欧美激情xxxxx| 少妇欧美激情一区二区三区| 91网站在线观看视频| 国产一区玩具在线观看| 精品国产一区在线| 看电视剧不卡顿的网站| 亚洲欧美视频在线| 91看片淫黄大片91| 日韩国产成人精品| 日韩有码在线电影| 成年人看的毛片| 国产内射老熟女aaaa∵| 欧美视频中文字幕| 欧美性天天影院| 国产肥老妇视频| 欧美日韩一区二区不卡| 日韩电影免费观看在| 国产精品人妻一区二区三区| 亚洲国产精久久久久久| 日韩免费高清在线| 久久夜色精品一区| 国产成一区二区| 久草国产精品视频| 日韩精品一区在线| 天天干天天草天天| 不卡av电影在线播放| 91精品国产99久久久久久红楼| 国产精品视频123| 亚洲精选中文字幕| 你懂的在线观看网站| 国产农村妇女精品| 91在线色戒在线| 一道本无吗一区| 欧美巨大黑人极品精男| 日本aaa视频| 亚洲精品视频观看| 欧美成人精品免费| 久久综合九色综合欧美98| 欧美精品欧美精品| 国产剧情一区在线| 欧美激情视频在线观看| 中文字幕免费在线看线人动作大片| 欧美视频一区二区三区在线观看| 午夜xxxxx| 欧美日韩亚洲一区二区| 丰满的少妇愉情hd高清果冻传媒 | 亚洲成人一二三区| 2019中文字幕免费视频| 正在播放亚洲精品| 亚洲精品久久久久久久久久久久久| 中文字幕在线播放一区| 日韩一二在线观看| 久久精品无码专区| 欧美精品视频www在线观看| 九色porny自拍| 欧洲一区在线电影| 亚洲一级av无码毛片精品| 黄色一区二区三区| 欧洲成人午夜精品无码区久久| 91精品在线观看入口| 女同性αv亚洲女同志| 欧美亚洲丝袜传媒另类| 日本猛少妇色xxxxx免费网站| 精品自拍视频在线观看| 午夜精品一区二| xvideos国产精品| 一区二区三区日| 51国偷自产一区二区三区 | 99er在线视频| 国产偷国产偷亚洲高清人白洁| 精品少妇一区二区三区在线| 91在线小视频| 欧美h视频在线观看| 伊人色综合久久天天| 午夜福利三级理论电影| 日韩精品免费视频| 探花国产精品一区二区| 亚洲综合av影视| 97久久超碰精品国产| 男同互操gay射视频在线看| 一区二区三区精品在线| av黄色一级片| 日韩有码视频在线| 91福利在线观看视频| 国产精品久久7| 国产精品激情偷乱一区二区∴| 日韩成人av免费| 国产视频久久久| 国产黄频在线观看| 亚洲三区四区| 亚洲情趣在线观看| 国产精品美女高潮无套| 日韩在线观看网站| 中文字幕免费在线看| 91夜夜未满十八勿入爽爽影院 | 91av国产在线| 成人黄色网址在线观看| 中文字幕一区二区三区四| 中文字幕一区日韩电影| 欧美aaaaaa午夜精品| 激情图片qvod| 欧美大胆人体bbbb| 亚洲成人av综合| 欧美亚洲国产免费| 欧美在线免费观看视频| 波多野结衣视频网址| 免费av一区二区三区| 欧美在线小视频| 国产理论片在线观看| 一级性生活视频| 亚洲精品久久久久中文字幕二区 | 欧美一激情一区二区三区| 国产一级片一区二区| 天天爱天天做天天操| 美美哒免费高清在线观看视频一区二区 | 一区二区成人国产精品| 欧美性大战xxxxx久久久| www.污视频| 亚洲这里只有精品| 久久免费在线观看| 国产精品色一区二区三区| 这里只有精品9| 国产男女无遮挡| 欧美激情一二区| 亚洲欧洲日韩女同| 国产高潮久久久| 国产69精品久久久久999小说| 在线观看视频亚洲| 欧美国产丝袜视频| 国产精品久久久久久免费免熟| 欧洲av无码放荡人妇网站| 精品sm在线观看| 麻豆精品久久精品色综合| 国产 中文 字幕 日韩 在线| 国产精品jizz在线观看老狼| 欧美人与性动交a欧美精品| 欧美日韩国产精品一区| www香蕉视频| av天堂一区二区| 亚洲影院色无极综合| 91福利国产精品| 这里只有精品999| 无码日本精品xxxxxxxxx| 色综合天天狠天天透天天伊人| 色婷婷综合久久久久| 精品一区二区日韩| 不卡av免费在线| 久久青草福利网站| 日韩欧美亚洲范冰冰与中字| 久久精品道一区二区三区| 成人免费视频入口| 丰满人妻一区二区三区53号| 国产精品1区2区3区在线观看| 老鸭窝一区二区| 欧美一级黄色影院| 蜜桃精品久久久久久久免费影院 | 狠狠狠色丁香婷婷综合激情| 日本中文字幕在线免费观看| 色婷婷狠狠18禁久久| 欧洲金发美女大战黑人| 成人www视频在线观看| 中文日韩电影网站| 一本色道久久综合狠狠躁的推荐 | 狠狠躁夜夜躁人人爽天天天天97| 福利视频网站一区二区三区| 国产在线观看第一页| 一本岛在线视频| 91在线观看免费高清完整版在线观看| 欧美日韩一区二区免费在线观看| 国产精品538一区二区在线| 中文字幕乱码人妻二区三区| 国产交换配乱淫视频免费| 夜夜春亚洲嫩草影视日日摸夜夜添夜| 欧美国产中文字幕| 色综合色综合色综合| 奇米综合一区二区三区精品视频| 欧美福利第一页| 午夜精品久久久久久久99热影院| 国产原创欧美精品| 欧美日韩国产一二三| 日韩精品午夜视频| 在线中文字日产幕| 亚洲高清在线观看一区| 国产精品久久久久久网站 | 在线观看中文字幕码| 国产a免费视频| 一区二区亚洲精品国产| 亚洲综合一二区| 亚洲国产成人一区二区三区| 另类人妖一区二区av| 亚洲中文字幕一区二区| 久久国产视频精品| 国产suv一区二区三区| 欧洲美熟女乱又伦| 亚洲乱码国产乱码精品精大量| 宇都宫紫苑在线播放|