pytorch實現分類

2022-05-16 14:08:21 字數 2143 閱讀 5237

完整**

#

實現分類

import

torch

import

torch.nn.functional as f

from torch.autograd import

variable

import

matplotlib.pyplot as plt

import

torch.optim as optim

#生成資料

n_data = torch.ones(100, 2)

x0 = torch.normal(2*n_data, 1)

y0 = torch.zeros(100)

x1 = torch.normal(-2*n_data,1)

y1 = torch.ones(100)

#x當做資料,y當做標籤

x =torch.cat((x0,x1), 0).type(torch.floattensor)

y =torch.cat((y0,y1), ).type(torch.longtensor)

x,y =variable(x),variable(y)

#繪製影象

#plt.scatter(x.data.numpy()[:, 0], x.data.numpy()[:, 1], c=y.data.numpy(), s=100, lw=0, )

#plt.show()

#定義網路

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.predict =torch.nn.linear(n_hidden,n_output)

defforward(self, x):

x =f.relu(self.hidden(x))

x =self.predict(x)

returnx#

輸入是兩個特徵,x對應的特徵和y對應的特徵,輸出是2個類,0和1

net = net(2, 10, 2)

#print(net)

#輸出為[0,1]說明為class1,若是[1,0],說明輸出為class0。這是二分類

#輸出為[0,1,0]說明為class1,若是[1,0,0],說明輸出為class0,若是[0,0,1],說明輸出為class2。這是三分類#優化

optimizer = optim.sgd(net.parameters(), lr=0.02)

loss_func =torch.nn.crossentropyloss()

#輸出是概率

#視覺化

plt.ion()

#plt.show()

for t in range(100):

out =net(x)

loss = loss_func(out, y) #

**值和真實值

optimizer.zero_grad()

loss.backward()

optimizer.step()

#視覺化

if t % 2 ==0:

plt.cla()

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)/200plt.text(1.5, -4, '

accuracy=%.2f

' % accuracy, fontdict=)

plt.pause(0.1)

plt.ioff()

plt.show()

PyTorch分類神經網路

這次我們也是用最簡單的途徑來看看神經網路是怎麼進行事物的分類.我們建立一些假資料來模擬真實的情況.比如兩個二次分布的資料,不過他們的均值都不一樣.import torch import matplotlib.pyplot as plt 假資料 n data torch.ones 100,2 資料的基...

Pytorch 通過pytorch實現線性回歸

linear regression 線性回歸是分析乙個變數與另外乙個 多個 變數之間關係的方法 因變數 y 自變數 x 關係 線性 y wx b 分析 求解w,b 求解步驟 1.確定模型 2.選擇損失函式 3.求解梯度並更新w,b 此題 1.model y wx b 下為 實現 import tor...

pytorch筆記5 分類

用簡單的例子看一下神經網路是怎麼分類的 有兩組資料,一組資料屬於分類1,一組資料屬於分類0 建立資料 n data torch.ones 100,2 data1 torch.normal 2 n data,1 其中一組資料的x座標和y座標都包含再data1中 label1 torch.zeros 1...