トーチインポート からtorch.autograd変数インポート インポートtorch.nn.functional AS F. インポートmatplotlib.pyplot AS のPLT #フェイクメイクデータ N_DATA(= torch.ones 100を、2 ) X0(= torch.normal 2 * N_DATA、1)#の各要素の平均値から(X、Y)= 2 * 位置N_DATAに対応する値を、ランダムに生成さの正規分布の標準偏差 YO =のtorch.zeros(100 各要素に対して)0#ラベル X1 torch.normal = - (2 * N_DATA、1。平均からの)各要素位(X、Y)= - 2 *N_DATA対応する位置値を、ランダムに生成さの正規分布の標準偏差 Y1 = torch.ones(100 ラベルの各要素に)#1 X = torch.cat((X0、X1)、0) .TYPE(torch.FloatTensor)#形状(200であり、2)FloatTensor = 32 - 「ビット浮動 Y = torch.cat((YO、Y1)).TYPE(torch.LongTensor)#形状(200で、)LongTensor = 64 - 整数「ビット #変数トーチことができる唯一の電車の中で、それらSO変数に変換 X、Y = 変数(X)、変数(Y) #データ描画 plt.scatter(x.data.numpy():0 ]、Xを.data.numpy():1。]、C = y.data.numpy())は色シーケンス#Cのある #1 plt.show() #ニューラルネットワークモジュール クラスネット(torch.nn.Module):#は、ニューラルネットワークを継承モジュール デフ__init __(自己、n_features、 n_hidden、n_output):ニューラルネットワークの初期化の#ハイパーパラメータ スーパー(ネット、自己).__のinit __()# に入らない、3行定着工程上、親クラスの初期化メソッドのニューラルネットワークモジュールを呼び出す self.hidden = torch.nn.Linear (n_features、n_hidden)#は、出力の数何入力隠れ層指定 self.predict = torch.nn.Linear(n_hidden、n_output)#予測がどのように入力層、出力の数を指定 :DEFフォワード(自己、x)が #の神経構造をネットワーク X = Xを介して中間層処理のF.relu(self.hidden(X))#正の活性化関数 X = データself.predict(X)層を介して隠れ層の#は、予測結果予測得る リターンxは ネット(=ネット図2は、10、2 )#クラスオブジェクト宣言 印刷(NET) 、インタラクティブグラフィックPlt.ionのplt.ioff間plt.ion()#及びコード plt.show() #ニューラルネットワークオプティマイザ、主にするために私たちのニューラルネットワークを最適化し、彼は私たちの訓練過程で起きる作り、時間のソーシャルネットワークトレーニングを保存します。 オプティマイザ = torch.optim.SGD(net.parameters()、LR = 0.01 )は、実際にバック#伝播ニューラルネットワークは、最初のパラメータを更新する第2の学習速度に対応する、体重および他のパラメーターである loss_func = トーチ。 nn.CrossEntropyLoss()#タグ誤差コスト関数 のための T で(範囲50 ): OUT = NET(X) 損失 = loss_func(OUT 、Y)#算出損失 optimizer.zero_grad()#ゼロ勾配 loss.backward()#バックプロパゲーション optimizer.step()の計算ノードと勾配最適化の# IF T%2 == 0 : plt.cla()#軸、すなわち現在の描画の前にクリアクリアトラック 予測 = torch.max(F.softmax(OUTが)。1 [)。1 ]#を確率に変換され、後者まず、インデックスの最大値は、最大値が0、戻りある場合 pred_y = 。prediction.data.numpy()()スクイーズ target_y = y.data.numpy() 、[plt.scatter(x.data.numpyを()0 ]、x.data.numpy():1 ]、C = pred_y、S = 100、LW = 0、=たCMap ' RdYlGn ' ) 精度 = SUM(pred_y == target_y)/ 200であります。#求准确率 plt.text(1.5 - 4、' 精度=%2F。'%の精度、fontdict = { ' サイズ':20、' 色':' 赤' }) plt.pause(0.1 ) PLT。 IOFF() plt.show()
以下は、上記のコードは、次のコードに変更、高速ニューラルネットワークコードをビルドあります
トーチインポート からtorch.autograd変数インポート インポートtorch.nn.functional AS F. インポートmatplotlib.pyplot AS のPLT #フェイクメイクデータ N_DATA(= torch.ones 100を、2 ) X0(= torch.normal 2 * N_DATA、1)#の各要素の平均値から(X、Y)= 2 * 位置N_DATAに対応する値を、ランダムに生成さの正規分布の標準偏差 YO =のtorch.zeros(100 各要素に対して)0#ラベル X1 torch.normal = - (2 * N_DATA、1。平均からの)各要素位(X、Y)= - 2 *N_DATA対応する位置値を、ランダムに生成さの正規分布の標準偏差 Y1 = torch.ones(100 ラベルの各要素に)#1 X = torch.cat((X0、X1)、0) .TYPE(torch.FloatTensor)#形状(200であり、2)FloatTensor = 32 - 「ビット浮動 Y = torch.cat((YO、Y1)).TYPE(torch.LongTensor)#形状(200で、)LongTensor = 64 - 整数「ビット #変数トーチことができる唯一の電車の中で、それらSO変数に変換 X、Y = 変数(X)、変数(Y) #データ描画 plt.scatter(x.data.numpy():0 ]、Xを.data.numpy():1。]、C = y.data.numpy())カラーシーケンス#Cのある #1 plt.show() #ニューラルネットワークモジュール NET2 = torch.nn.Sequential( torch.nn.Linear(2、10 )、 torch.nn .ReLU()、 torch.nn.Linear(10、2 ) ) plt.ion()#とplt.ionのplt.ioff間のコード、インタラクティブグラフィクス plt.show() #ニューラルネットワークオプティマイザ、主私たちのニューラルネットワークを最適化するために、時間のソーシャルネットワークトレーニングを保存し、彼は私たちの訓練プロセスに立ち上がって作ります。 オプティマイザ = torch.optim.SGD(net.parameters()、LR = 0.01 )は、実際にバック#伝播ニューラルネットワークは、最初のパラメータを更新する第2の学習速度に対応する、体重および他のパラメーターである loss_func = トーチ。 nn.CrossEntropyLoss()#タグ誤差コスト関数 のための T 内の範囲(50): OUT = NET(X) 損失 = loss_func(OUT 、Y)#計算された損失 optimizer.zero_grad()#ゼロ勾配 loss.backward()#のバックプロパゲーション 計算ノードと勾配最適化のoptimizer.step()# IF T%2 == 0 : plt.cla()#軸、すなわち現在の描画の前にクリアクリアトラック 予測 = torch.max(F.softmax(OUTが)。1 [)。1 ]#を確率に変換され、後者まず、インデックスの最大値は、最大値が0、戻りある場合 pred_y = 。prediction.data.numpy()()スクイーズ target_y = y.data.numpy() 、[plt.scatter(x.data.numpyを()0]、x.data.numpy():, 1 ]、C = pred_y、S = 100、LW = 0、CMAP = ' RdYlGn ' ) 精度 = SUM(pred_y == target_y)/ 200 。#求准确率 PLT .text(1.5 - 4、' 確度=%2F '%の精度、fontdict = { ' サイズ':20、' 色':' 赤' }) plt.pause(0.1 ) plt.ioff() plt.show ()