私の最初のTensorflowプログラム(自分のデータを使用)を書きました。それは少なくともそれがクラッシュしないでうまく動作します!しかし、私は有線精度の値を0または1のいずれかを得ていますか?Tensorflowの精度の問題
.................................
the previous part of the code, is only about handeling csv file an getting Data in correct format/shapes
......................................................
# Tensoflow
x = tf.placeholder(tf.float32,[None,len(Training_Data[0])],name='Train_data')# each input has a 457 lenght
y_ = tf.placeholder(tf.float32,[None, numberOFClasses],name='Labels')#
#w = tf.Variable(tf.zeros([len(Training_Data[0]),numberOFClasses]),name='Weights')
w = tf.Variable(tf.truncated_normal([len(Training_Data[0]),numberOFClasses],stddev=1./10),name='Weights')
b = tf.Variable(tf.zeros([numberOFClasses]),name='Biases')
model = tf.add(tf.matmul(x,w),b)
y = tf.nn.softmax(model)
cross_entropy = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(labels=y_, logits=y))
#cross_entropy = tf.reduce_mean(-tf.reduce_sum(y_ * tf.log(y), reduction_indices=[1]))
train_step = tf.train.GradientDescentOptimizer(0.01).minimize(cross_entropy)
sess = tf.Session()
sess.run(tf.global_variables_initializer())
for j in range(len(train_data)):
if(np.shape(train_data) == (batchSize,numberOFClasses)):
sess.run(train_step,feed_dict={x:train_data[j],y_:np.reshape(train_labels[j],(batchSize,numberOFClasses)) })
correct_prediction = tf.equal(tf.arg_max(y,1),tf.arg_max(y_,1))
accuracy = tf.reduce_mean(tf.cast(correct_prediction,"float"))
accuracy_vector= []
current_class =[]
for i in range(len(Testing_Data)):
if(np.shape(Testing_Labels[i]) == (numberOFClasses,)):
accuracy_vector.append(sess.run(accuracy,feed_dict={x:np.reshape(Testing_Data[i],(1,457)),y_:np.reshape(Testing_Labels[i],(1,19))}))#,i)#,Test_Labels[i])
current_class.append(int(Test_Raw[i][-1]))
accuracy_vector
は次配信しploting:
[]
私はここに欠けているものを任意のアイデア?
ありがとうございました!
あなたは訓練が実際に起こりますか? train_dataは形状の可能性が高いので(n_samples、num_features)、n_samplesはサンプルまたはバッチの総数であるため、 'if(np.shape(train_data)==(batchSize、numberOFClasses)):'というテストは真であってはなりませんサイズとnum_featuresはあなたのケースでは457と思われます... – gdelab
@gdelab私は十分にあなたに感謝することができませんでした、if文は、最後にプログラムがクラッシュするため、の終わりのためだけです。しかし、トレーニングが行われているかどうかを確認するには、if文が一度だけ有効でないことを意味します。トレーニングが本当に起こっているかどうかをチェックする方法は? – Engine
'if'と同じ 'sess.run(training_step、...)'の直前または直後に 'print( "トレーニングする必要があります")を追加することができます。それが何かを印刷するならば、あなたは訓練します! – gdelab