搭建神經網路基礎綜合

2021-10-04 04:47:31 字數 3581 閱讀 9248

以下內容是根據torch官網和莫煩python學習所得

載入資料,訓練集,**集,標註集

搭建網路,即 class net

例項化網路 net

建立 optimizer

確定損失函式 loss_func

開始訓練

import torch

from torch.autograd import variable

import torch.nn.functional as f

import matplotlib.pyplot as plt

import torch.utils.data as data

torch.manual_seed(1)

# fake data. y = 2.863* x^2 + 5.652 * x + 3.423

x = torch.unsqueeze(torch.linspace(-5

,5,5000

), dim=1)

y =2.863

* x.

pow(2)

+5.652

* x +

3.423

*(torch.rand(x.size())

-0.5

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

# plt.show()

# 參見批訓練

torch_dataset = data.tensordataset(x, y)

loader = data.dataloader(

dataset=torch_dataset,

batch_size=

100,

shuffle=

true

, num_workers=2,

)# create net

class

net(torch.nn.module)

:def

__init__

(self)

:super

(net, self)

.__init__(

) self.hidden = torch.nn.linear(1,

20)self.predict = torch.nn.linear(20,

1)defforward

(self, x)

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

) x = self.predict(x)

return x

if __name__ ==

'__main__'

:# 例項化網路物件

net_sgd = net(

) net_momentum = net(

) net_rmsprop = net(

) net_adam = net(

) nets =

[net_sgd, net_momentum, net_rmsprop, net_adam]

# 建立 optimizer

opt_sgd = torch.optim.sgd(net_sgd.parameters(

), lr=

0.01

) opt_momentum = torch.optim.sgd(net_momentum.parameters(

), lr=

0.01

, momentum=

0.8)

opt_rmsprop = torch.optim.rmsprop(net_rmsprop.parameters(

), lr=

0.01

, alpha=

0.9)

opt_adam = torch.optim.adam(net_adam.parameters(

), lr=

0.01

, betas=

(0.9

,0.99))

optimizer =

[opt_sgd, opt_momentum, opt_rmsprop, opt_adam]

# 建立損失函式

loss_func = torch.nn.mseloss(

) loss_net =[[

],,,

]for epoch in

range

(100):

# 整套資料訓練100次

for step,

(batch_x, batch_y)

inenumerate

(loader)

:# 每次取100個樣本訓練

for net, opt, loss_opt in

zip(nets, optimizer, loss_net)

:# 分別用四個網路訓練

predict = net(batch_x)

loss = loss_func(predict, batch_y)

opt.zero_grad(

) loss.backward(

) opt.step())

)# 將損失函式的值儲存起來

labels =

['sgd'

,'momentum'

,'rmsprop'

,'adam'

]for i, l_his in

enumerate

(loss_net)

: plt.plot(l_his, label=labels[i]

) plt.legend(loc=

'best'

) plt.xlabel(

'steps'

) plt.ylabel(

'loss'

) plt.ylim((0

,1100))

plt.show(

)# 以下是不採用 batch 的方法

# for t in range(1000):

# for net, opt, loss_opt in zip(nets, optimizer, loss_net):

# predict = net(x)

# loss = loss_func(predict, y)

# opt.zero_grad()

# loss.backward()

# opt.step()

# labels = ['sgd', 'momentum', 'rmsprop', 'adam']

# for i, l_his in enumerate(loss_net):

# plt.plot(l_his, label=labels[i])

# plt.legend(loc='best')

# plt.xlabel('steps')

# plt.ylabel('loss')

# plt.ylim((0, 1100))

# plt.show()

TensorFlow搭建基礎神經網路

相當重要,部落格記錄一下 coding utf 8 利用鳶尾花資料集,實現前向傳播 反向傳播,視覺化loss曲線 匯入所需模組 import tensorflow as tf from sklearn import datasets from matplotlib import pyplot as ...

搭建神經網路

1.import 2.train,test 3.model tf.keras.model.sequential 在sequential中描述網路結構,相當於走一遍前向傳播 4.model.compile 在compile中配置訓練方法,選擇哪個優化器,選擇什麼損失函式,選擇什麼評價指標 5.mode...

神經網路體系搭建(一) 神經網路

本篇是神經網路體系搭建的第一篇,解決體系搭建的前四個問題,詳見神經網路體系搭建 序 神經網路的定義就不再贅述,直接從最簡單的神經網路說起。將一系列輸入資料,通過訓練好的網路模型處理,得到輸出結果,這是神經網路決策的步驟。那麼我們的重點就是通過訓練得到網路模型。從上圖可以看出,模型的關鍵其實是尋找合適...