pytorch基礎 - ネットワークを構築します

ネットワークを構築するステップは、実質的に以下の通りです。

1.データを準備します

2.ネットワーク構造のモデルを定義します

3.損失関数を定義
4.最適化オプティマイザ定義
5.トレーニング
  (オプション)、入力データおよびタグの準備5.1テンソル形式
  の伝搬損失を計算する前に5.2が計算され、出力ネットワーク出力機能喪失
  5.3バックプロパゲーションは、パラメータ更新
    次の三つのを次いで劣らず:
    5.3.1 optimizer.zero_grad()はクリア前の反復0から勾配値を計算
    5.3.2 loss.backward()バックプロパゲーション、勾配値算出
    5.3.3 optimizer.step()の重みを更新しますパラメータ
  検証セットとトレーニングセットと印刷トレーニング情報の正確性の損失と損失の保存5.4。(オプション
6は、トレーニングプロセスの変化及び精度の損失(オプション)を示す
テストセットに7

 

コードのコメントは非常に詳細に書かれています 

1  インポートトーチ
 2  インポートF. AS torch.nn.functional
 。3  インポートPLT AS matplotlib.pyplot
 。4  
。5  1のデータ準備データが生成
。6 X = torch.unsqueeze(torch.linspace(-1,1,100)、薄暗い= 1 。7  プリント(x.shape)
 。8 Y = X * X + 0.2 * torch.rand(x.size())
 。9  表示データスキャッタグラム
10  plt.scatter(x.data.numpy()、y.data.numpy ())
 。11  
12はある ビルドネットの網目構造を定義するために2 
13である クラスネット(torch.nn.Module):
 14      #1 n_feature:入力の数はn_hidden特徴:n_output隠れ層の数:出力層の数
15      DEF  __init__ (セルフ、n_feature、n_hidden、n_output):
 16          スーパーネットは、親クラス・パラメータの初期化が、継承された親クラスを代表する
。17          。スーパー(ネット、自己)__init__ ()
 18は、         nn.Linearが表す線形層を表しますY = W W [n_hidden、n_feature]の形状の*のX + B [n_hidden]の形状のB 
。19          #の寸法Wは、それが逆になる転置前の寸法である^ T * X + B、W Y = 
20          = self.hidden torch.nn.Linear(n_feature、n_hidden)
 21は          self.predict = torch.nn.Linear(n_hidden、n_output)
 22は         プリント(self.hidden.weight)
 23は、         プリント(self.predict.weight)
 24      定義します前の伝播関数
25     DEF フォワード(セルフ、X):
 26である         。#         n_feature n_hidden n_output 
27          例(2、5)5 1 2。
28                              - ** - 
29                       - - ** - - - ** 
30                              - ** - - - ** 
31                       ** - - - ** - - 
32                              - ** - 
33は、         #1             入力層、出力層、中間層
34である          X = F.relu(self.hidden(X))
 35          X = self.predict(X )
 36          リターンX
 37 [  ネットワークNETの例
38れる NET =ネット(n_feature = 1、n_hidden = 10、= n_output。1 39  プリント(NET)
 40の 、本明細書に平均二乗誤差を使用3.損失関数の定義(平均二乗誤差)
41は = loss_func トーチ。 nn.MSELoss()
 42は、 、本明細書に確率的勾配降下法定義4.オプティマイザ
43れるオプティマイザ= torch.optim.SGD(net.parameters()、LR = 0.2 44である 。#ディスプレイ毎に300回10回更新定義
45  PLTを。イオン()
 46は 列車5 
47  のために T における範囲(100 ):
 48      予測= NET(X)     基づいて予測XおよびX上の入力
49     = loss_func(予測、y)の損失      (1 NN出力、2ターゲット)でなければならない
50      5.3反向传播三步不可少
51      optimizer.zero_grad()   次の電車のための明確な勾配
52      loss.backward()         バックプロパゲーション、計算は、勾配
53      optimizer.step()        勾配適用
54  
55      場合のT%10 == 0:
 56          #のプロットと表示学習プロセス
57          )plt.cla(
 58          plt.scatter(x.data.numpy()、Y .data.numpy())
 59         plt.plot(x.data.numpy()、prediction.data.numpy()、' R- '、LW = 5 60          plt.text(0.5、0、' 損失=%。4F '%loss.data。 numpyの()、fontdict = { ' サイズ':20、' '' ' })
 61          plt.show()
 62          plt.pause(0.1 63  
64 plt.ioff()

参考:Moのトラブルパイソン

おすすめ

転載: www.cnblogs.com/bob-jianfeng/p/11407955.html