目標效果:
"""生成隨機資料"""
n_data = torch.ones(100, 2) # 生成全為1的100行2列的張量
x0 = torch.normal(2 * n_data, 1) # 返回一組張量,表示從均值為2*n_data,標準差為1的正態分佈中隨機抽取的資料
y0 = torch.zeros(100) # 生成全為0的100行1列的張量,代表標籤型別為0
x1 = torch.normal(-2 * n_data, 1) # 標籤型別為1,返回一組張量,表示從均值為-2*n_data,標準差為1的正態分佈中隨機抽取的資料
y1 = torch.ones(100) # 代表標籤型別為1
x = torch.cat((x0, x1), 0).type(torch.floattensor) # cat是將兩個張量,按維度0(行)進行拼接,指定為floattensor形式
y = torch.cat((y0, y1), ).type(torch.longtensor) # 標籤一般使用longtensor形式
x, y = variable(x), variable(y) # 變成variable的形式,神經網路只能輸入variable
"""建立神經網路"""
class net(torch.nn.module):
def __init__(self, n_feature, n_hidden, n_output): # 初始化資訊
super(net, self).__init__()
self.hidden = torch.nn.linear(n_feature, n_hidden) # 一層隱藏層神經網路,輸入資訊,輸出資訊(神經元個數)
self.out = torch.nn.linear(n_hidden, n_output) # 一層**層神經網路,輸入資訊,輸出資訊(神經元個數)
def forward(self, x): # 前向傳遞,x為輸入資訊
x = f.relu(self.hidden(x)) # 出了隱藏層要啟用
x = self.out(x)
return x
"""列印處理資料"""
net = net(2, 10, 2) # 輸入值1個x,隱藏層10個,輸出值乙個y
optimizer = torch.optim.sgd(net.parameters(), lr=0.02) # 使用優化器優化神經網路引數,lr為學習效率,sgd為隨機梯度下降法
loss_func = torch.nn.crossentropyloss() # 處理多分類問題
plt.ion() # 實時列印的過程
for t in range(100): # 迴圈訓練
out = net(x) # 輸入x,得到**值
loss = loss_func(out, y) # 計算損失,**值和真實值的對比
optimizer.zero_grad() # 梯度先全部降為0
loss.backward() # 反向傳遞過程
optimizer.step() # 以學習效率0.5來優化梯度
"""迴圈列印"""
if t % 2 == 0: # 每2步列印一次
plt.cla() # 清除當前圖形中的當前活動軸。其他軸不受影響
prediction = torch.max(out, 1)[1] # troch.max(out,1)取每行的最大值,troch.max()[1], 只返回最大值的每個索引
pred_y = prediction.data.numpy() # **分類標籤轉換成numpy格式
target_y = y.data.numpy() # 正確標籤轉換成numpy格式
plt.scatter(x.data.numpy()[:, 0], x.data.numpy()[:, 1], c=pred_y, s=100, lw=0, cmap='rdylgn')
accuracy = sum(pred_y == target_y) / 200
plt.text(1.5, -4, 'accuracy=%.2f' % accuracy, fontdict=)
plt.pause(0.1) # 每次停頓0.1
pytorch 深度學習
pytorch深度學習實踐 訓練集 開發集 模型評估 測試集。f x wx b f x wx b f x w x bloss 乙個樣本 cost mean square error training set 區域性最優,不一定全域性最優。鞍點 梯度為0,但無法繼續迭代。w w c ost ww w ...
深度學習 安裝pytorch
1 官網 2 cmd中執行 注意 直接複製run this command 裡面的安裝 注意 把pip3的3刪除 第一步 pip install i 第二步 pip install torchvision 注意 第一步和第二步可以合併為pip install i torchvision 3 安裝技巧...
PyTorch 深度學習 筆記
方差 偏差 線性回歸來確定兩種或兩種以上變數間相互依賴的定量關係。線性回歸對於輸入x和輸出y有乙個對映 類似ax b 而我們是訓練a b這兩個引數。以下 使用pytorch建立乙個線性的模型來對其進行擬合,即訓練過程。def linear ex x np.random.rand 256 noise ...