深度學習 使用PyTorch模擬二分類

2021-09-25 15:42:06 字數 2451 閱讀 6421

目標效果:

"""生成隨機資料"""

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