MoのトラブルPyTorchの研究ノート(5) - 分類

トーチインポート
 から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は102 )#クラスオブジェクト宣言
印刷(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(210 )、
    torch.nn .ReLU()、
    torch.nn.Linear(102 

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 ()

 

おすすめ

転載: www.cnblogs.com/henuliulei/p/11369857.html