區分型別(分類)

2022-08-27 03:15:08 字數 2768 閱讀 4579

1.填資料

2.構造神經網路模型

3.訓練模型

4.繪圖

**如下

import torch

import 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...