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]
直接スケジュールされたデータは、少量のデータのための状況は、大規模なデータ量が適用されません。
さて、このブログは、この目的のために導入されました。次は、画像データを処理する方法。