1.填資料
2.構造神經網路模型
3.訓練模型
4.繪圖
**如下
import torchimport matplotlib.pyplot
asplt
import torch.nn.functional
asf # 激勵函式都在這
#step1
# 假資料
n_data = torch.ones(100, 2
) # 資料的基本形態
x0 = torch.normal(2*n_data, 1) # 型別0 x data (tensor), shape=(100, 2
)y0 = torch.zeros(100) # 型別0 y data (tensor), shape=(100
, )x1 = torch.normal(-2*n_data, 1) # 型別1 x data (tensor), shape=(100, 1
)y1 = torch.ones(100) # 型別1 y data (tensor), shape=(100
, )# 注意 x, y 資料的資料形式是一定要像下面一樣 (torch.cat 是在合併資料)
x = torch.cat((x0, x1), 0).type(torch.floattensor) # floattensor = 32-bit floating
y = torch.cat((y0, y1), ).type(torch.longtensor) # longtensor = 64-bit integer
#step2
#構造神經網路
class
net(torch.nn.module): # 繼承 torch 的 module
def __init__(self, n_feature, n_hidden, n_output):
super(net, self).__init__() # 繼承 __init__ 功能
self.hidden =torch.nn.linear(n_feature, n_hidden) # 隱藏層線性輸出
self.
out =torch.nn.linear(n_hidden, n_output) # 輸出層線性輸出
def forward(self, x):
# 正向傳播輸入值, 神經網路分析出輸出值
x =f.relu(self.hidden(x)) # 激勵函式(隱藏層的線性值)
x = self.out
(x) # 輸出值, 但是這個不是**值, **值還需要再另外計算
return
xnet = net(n_feature=2, n_hidden=10, n_output=2
) # 幾個類別就幾個 output
for param in
net.parameters():
print(type(param.data), param.size())
#step3
#訓練網路
# optimizer 是訓練的工具
optimizer = torch.optim.sgd(net.parameters(), lr=0.02
) # 傳入 net 的所有引數, 學習率
# 算誤差的時候, 注意真實值!不是! one-hot 形式的, 而是1d tensor, (batch,)
# 但是**值是2d tensor (batch, n_classes)
loss_func =torch.nn.crossentropyloss()
for t in range(100
):#訓練100次
out =net(x) # 餵給 net 訓練資料 x, 輸出分析值
loss = loss_func(out
, y) # 計算兩者的誤差
optimizer.zero_grad() # 清空上一步的殘餘更新引數值
loss.backward() # 誤差反向傳播, 計算引數更新值
optimizer.step() # 將引數更新值施加到 net 的 parameters 上
# 接著上面來
if t % 2 == 0
: plt.cla()
# 過了一道 softmax 的激勵函式後的最大概率才是**值
prediction = torch.max(f.softmax(out), 1)[1
] pred_y =prediction.data.numpy().squeeze()
target_y =y.data.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)
plt.ioff() # 停止畫圖
plt.show()
bash不對變數區分 型別
1 bin bash 2 int or string.sh 整型還是字串?3 4 a 2334 整型.5 let a 1 6 echo a a a 2335 7 echo 還是整型.8 9 10 b 將 23 替換成 bb 11 這將把變數b從整型變為字串.12 echo b b b bb35 13...
分類與聚類區分
一次偶然的報告,老師無意的一句 不知道是聚類還是分類 猛然發現自己對分類與聚類也不能分的很清楚。把分類與聚類區別整理了下 分類 classification 找出描述並區分資料類或概念的模型 或函式 以便能夠使用模型 類標記未知的物件類。分類分析在資料探勘中是一項比較重要的任務,目前在商業上應用最多...
按型別分類
更新日期 2004 09 20 選擇查詢方法 按名稱分類 按型別分類 所有分類 web服務 網路作業系統 桌面資料庫 多 系統管理 核心安全 系統服務 開發工具 web服務 apache analog jspcart php nuke tomcat tiki xaraya 網路 big sister...