pytroch 動手搭建第乙個神經網路

2021-09-11 00:23:41 字數 2032 閱讀 7759

我是用的是pytorch框架,python3.6, 開發工具pycharm

這裡自己造假資料,實現回歸模型

一、造資料

import torch

import numpy as np

import matplotlib.pyplot as plt

from torch.nn.functional as f #獲得神經網路的激勵函式

from torch.autograd import variable #變數(將張量資料變數化,神經網路只能處理變數)

x = torch.unsqueeze(torch.linspace(-1,1,100),dim=1) #使用unsqueeze將資料轉換為二維資料,需要用上dim引數

y = x.pow(2) + 0.2*torch.rand(x.size())

x, y = variable(x,requires_grad=false), variable(y,requires_grad=false)

二、搭神經網路

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)

def forward(self,x):

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

x = self.predict(x)

return x

net = net(1,10,1)

plt.ion()

plt.show()

三、優化神經網路

optimizer = torch.optim.sgd(net.parameters(), lr=0.5)

loss_func = torch.nn.mseloss() #均方差足以解決回歸問題中的誤差

四、訓練

for t in range(100):

prediction = net(x)

loss = loss_func(prediction, y)

#所有引數的梯度降為為0

optimizer.zero_grad()

#反向傳遞,給每乙個神經元計算出梯度

loss.backward()

#以0.5的學習率來優化梯度

optimizer.step()

#以下為畫圖**:

if t % 5 == 0:

plt.cla()

plt.scatter(x.data.numpy(), y.data.numpy())

plt.plot(x.data.numpy(), prediction.data.numpy(), 'r-', lw=5)

plt.text(0.5, 0, 'loss=%.4f' % loss.data.item(), fontdict=)

plt.pause(0.1)

plt.ioff()

plt.show()

就這樣這是乙個簡單的實現神經網路進行回歸訓練的例項

訓練結果:

上述步驟的第二步,也可以用快速搭建法去實現神經網路的搭建, 這樣就省事多了

在這裡插入**片

net = torch.nn.sequential(

torch.nn.linear(1,10),

torch.nn.relu(),

torch.linear(10,1),

)

搭建第乙個Vue專案

如果沒有什麼問題的話,nodejs安裝成功後會將npm 包管理工具 自動新增至系統的環境變數。開啟cmd,輸入命令 npm v 我的結果如下,表示安裝成功,npm已新增至系統環境變數 npm畢竟是國外的,抽風是極有可能的。所以可以使用taobao的替代產品cnpm。安裝方式為在cmd中輸入如下 np...

EMguCV搭建第乙個程式

這篇部落格旨在教學emgucv3.0的安裝與配置。環境 vs2013 emgucv3.0 emgu cv簡介 emgu cv 是.net平台下對opencv影象處理庫的封裝。也就是opencv的.net版。它執行在.net相容的程式語言下呼叫opencv的函式,如c vb vc 等。同時這個封裝庫可...

python學習 動手寫第乙個類

俗話說 好記性不如爛筆頭 真正開始寫類的時候才發現那是相當累啊。一 題目 編寫乙個類,實現簡單的棧。資料的操作按照先進後出 filo 的順序。主要成員函式為put item 實現資料item插入棧中 get 實現從棧中取乙個資料。二 準備工作 開始之前要做些準備工作,主要是熟悉點規範吧,以後慢慢正規...