自分のデータを訓練するために、実際のノート(1)完全に接続されているニューラルネットワーク(FCN)tensorflow奥行研究(TXTファイルから読み込み)

1、データを準備

 TXTファイルへのデータ(データの量、それは自動的に任意の言語を達成することができ、ファイルTXT独自のデータを書き込むためにプログラムを書くことですが)、データ間をカンマで区切られ、最後にマークされたデータタグ(など0,1のように、)分類のため。各行は、トレーニングサンプルを表します。図に示すように。

 

 前記最初の3つの列(特徴)を表すデータは、最後の列は、データ(特徴)のラベルを示しています。注:ラベルはコーディングゼロからスタートする必要があります!

2、完全なネットワーク接続を実現するために

 私は、それが一般的なコードの実装がどのように非常に単純な、言うことはありません。このプロセスは、このブログの焦点は、独自のデータ、私は以下のコメントをするでしょう、いくつかの注意事項を使用することです。直接コードに

1  隠されたレイヤパラメータ
2 in_units。3 =   入力ニューロン番号
3 h1_units = 5   隠れ層と出力ニューロンの数
。4   
。5  第二隠れ層のニューロンの数
。6 h2_units = 6
 。7   
。8   
。9 tf.Variable = W1の(tf.truncated_normal([in_units、h1_units]、STDDEV = 0.1)) 隠された層の重み、Wが正常遮断する初期化される
10 B1 = tf.Variable(tf.zeros([h1_units]))   隠された層はパラノイア0に設定されている
。11 tf.VariableのW2 =(tf.truncated_normal([h1_units、h2_units]、STDDEV = 0.1)) 第二隠れ層の重み、Wは、通常、カットオフに初期化される
12は B2 = TF .Variable(tf.zeros([h2_units]))  ゼロに第二隠れ層パラノイアセット
13は  
14 tf.VariableのW3は、=(tf.zeros([h2_units、2])) 出力層の重みとパラノイアは0に設定されている
15 B3 = tf.Variable(tf.zeros([2 ]))
 16   
。17  #が入力変数を定義しますxおよびドロップアウト率
18であり、X = tf.placeholder(tf.float32、[なし] ,. 3])#1 
19 keep_prob = tf.placeholder(tf.float32)
 20は  
21である #は隠された層を定義する
22である hidden1 = tf.nn. RELU(tf.matmul(X、W1 +)のB1)
 23がある hidden1_drop = tf.nn.dropout(hidden1、keep_prob)
 24の  
25  #は、第二中間層定義
26は hidden2 = tf.nn.relu(tf.matmul(hidden1_drop、 W2)+ B2)
 27 hidden2_drop = tf.nn.dropout(hidden2、keep_prob)

要注意

in_units = 3#入力ニューロンの数、寸法および関連の特性

 

X = tf.placeholder(tf.float32、[なし]、[3])#寸法および関連の特性

3、実現損失関数

      標準ソフトマックスとクロスエントロピー、あまりないと言っています。    

1 Y = tf.nn.softmax(tf.matmul(hidden2_drop、W3 +)のB3)
 2   
。3  損失関数と選択オプティマイザを定義する
。4 Y_ = tf.placeholder(tf.float32、[なし]、[2])   #1 列です図2は2つの行が、訓練入力サンプルの数を表し、いずれも示していない不明
。5   
。6 corss_entropy = tf.reduce_mean(-tf.reduce_sum(Y_ * tf.log(Y)、reduction_indices = [1 ]))
 。7 train_step = tf.train.AdagradOptimizer(0.3).minimize(corss_entropy)

 重要な考慮事項:

Y_ = tf.placeholder(tf.float32、[なし]、2])#数を書き込むためのいくつかの種類がありますが、私はそうは2という2つのカテゴリを書きました

図4に示すように、データは、TXT、およびメイク処理から読み出されます

    最初のデータのすべてのの、ここでの焦点のtxtから読み出し、その後、ラベルはワンホットエンコーディングされ、ワンホットエンコーディングは何ですか?インデックスは、カテゴリは、(1)非ゼロ次元である、カテゴリを示します。コードの実装:

1データ= np.loadtxt(' txt.txt '、DTYPE = ' フロート'、DELIMITER = ' ' 2 3。 ホット符号化されたラベルにサンプルを変換する4。DEFのlabel_change(BEFORE_LABEL):
 5      label_num = LEN(BEFORE_LABEL)
 6      change_arr np.zeros =((label_num、2))  2は、2つのタイプがあることを示し7。ための I における範囲(label_num):
 8 ゼロからのサンプルタグデータ要求9              change_arr [I、INT(BEFORE_LABEL [I]) ]。1 =
 10 リターンchange_arr
 。11  
 
 
              
       
12  データを抽出するための
13である DEF トレイン(データ):
 14      data_train_xデータ= [:7 ,: 3]   トレーニングデータとし、フロントラインは、フロントライン7 7を表し、3は、最初の3つの列を取って表し、除外データタグ
15      = label_change data_train_y(DATA [:7、-1 ])
 16      リターンdata_train_x、data_train_y
 。17   
18である  
。19 data_train_x、data_train_y =トレイン(データ)

私がコメントを行っているコードに注意が必要な領域は、それらを繰り返しません。

5、トレーニングとテストを開始

研修課

1   I における範囲(5):  反復バッチトレーニング取る
2     img_batch、label_batch tf.train.shuffle_batch =([data_train_x、data_train_y]、   ランダムサンプリングに存在する
3。                                                      BATCH_SIZE = 2 4。                                                      NUM_THREADS = 2 5。                                                      容量=図7 図6                                                      min_after_dequeue = 2 。7                                                      enqueue_many = TRUE)
 。8    COORD = tf.train.Coordinator()  
 9つの     スレッド= tf.train.start_queue_runners(COORD = COORD、SESの= SESの) 
 10   
11   
12     img_batch、label_batch = sess.run([img_batch、label_batch])
 13   
14     train_step.run({ X:img_batch、Y_:label_batch、keep_prob:0.75}    
1  预测部分
2 correct_prediction = tf.equal(tf.argmax(Y、1)、tf.argmax(Y_、1 ))
 3精度= tf.reduce_mean(tf.cast(correct_prediction、tf.float32))
 4  プリント( accuracy.eval({X:data_train_x、Y_:data_train_y、keep_prob:1.0}))   

すべてのプロセスのような完成。ネットワーク構造は適宜変更可能であり、コアがデータを読み出す方法で完全に接続されたニューラル・ネットワーク・トレーニングおよびTXT試験から(MLP)それ自身に入力されます。

もちろん、定義がTXTから読み取れません、時間変数に直接入力することができます。すなわち:

1枚の画像= [1.0,2.0,3.0]、[9,8,5]、[9,5,6]、[7,5,3]、[6,12,7]、[8,3,6 ] [2,8,71 ]  
 2ラベル= [0,1]、[1,0]、[1,0]、[1,0]、[1,0]、[0,1]、 [0,1 ]        
 3 image_test = [9,9,9 ]     
 4 label_test = [0,1]

直接スケジュールされたデータは、少量のデータのための状況は、大規模なデータ量が適用されません。

  さて、このブログは、この目的のために導入されました。次は、画像データを処理する方法。

おすすめ

転載: www.cnblogs.com/pypypy/p/11829700.html