torch框架中一些常用API,BP反向傳播通用代碼

torchvision是獨立於PyTorch的關於圖像操作的一個工具庫,目前包括六個模塊:
torchvision.datasets:Torch框架中常用的數據集集成與使用
torchvision.models:經典模型積累,torchvision.models.resnet18
torchvision.transforms:常用的圖像操作,例隨機切割、旋轉、數據類型轉換、tensor與numpy 和PIL Image的互換等
torchvision.utils:其他工具,比如產生一個圖像網格等
from torch import transform
torchvision中常用的數據擴增方法
transforms.CenterCrop 對圖片中心進行裁剪
transforms.ColorJitter 對圖像顏色的對比度、飽和度和零度進行變換
transforms.FiveCrop 對圖像四個角和中心進行裁剪得到五分圖像
transforms.Grayscale 對圖像進行灰度變換
transforms.Pad 使用固定值進行像素填充
transforms.RandomAffine 隨機仿射變換
transforms.RandomCrop 隨機區域裁剪
transforms.RandomHorizontalFlip 隨機水平翻轉
transforms.RandomRotation 隨機旋轉
transforms.RandomVerticalFlip 隨機垂直翻轉
import sys
sys-系統特定的參數和功能
torch.manual_seed(args.seed) #爲CPU設置種子用於生成隨機數,以使得結果是確定的
if args.cuda:
torch.cuda.manual_seed(args.seed)#爲當前GPU設置隨機種子;如果使用多個GPU,應該使用torch.cuda.manual_seed_all()爲所有的GPU設置種子。
from keras.layers import UpSampling2D
UpSampling2D爲pooling2D的相反,上採樣層
BP反向傳播通用代碼:
使用Torch框架的進行模型訓練的BP反向傳播代碼:
model=Model(input)
criterion = nn.MSELoss()
optimizer = torch.optim.Adam(model.parameters(), lr=1e-2)
#模型訓練
for e in range(1000):
var_x = Variable(train_x)
var_y = Variable(train_y)
out = model(var_x)# 前向傳播
loss = criterion(out, var_y)
optimizer.zero_grad()
loss.backward()
optimizer.step()
if (e + 1) % 100 == 0: # 每 100 次輸出結果
print(‘Epoch: {}, Loss: {:.5f}’.format(e + 1, loss.data[0]))
model.eval()
data_X = data_X.reshape(-1, 1, 2)
data_X = torch.from_numpy(data_X)
var_data = Variable(data_X)
pred_test = model(var_data) # 測試集的預測結果
pred_test = pred_test.view(-1).data.numpy()
matplotlib.pyplot的API說明
plt.legend()#繪圖圖例

import numpy as np
import pandas as pd

data_csv = data_csv.dropna() # 濾除缺失數據
dataset = data_csv.values # 獲得csv的值
dataset = dataset.astype(‘float32’)
max_value = np.max(dataset) # 獲得最大值
min_value = np.min(dataset) # 獲得最小值
scalar = max_value - min_value # 獲得間隔數量

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章