2017-01-07 14 views
1

私は入力として正規化されたword2vecを持つ非常に単純なNNを使用しています。 私の列車(ミニバッチに基づいて)を走らせるとき、列車の費用は1020年頃から始まり、1000人民元を下回りますが、これ以上ではありません。正確さは約50%です。TensorFlowなぜ私の費用関数は減少しないのですか?

なぜコストは下がりませんか?どのようにして、毎回の秤量が更新されることを確認することができますか?

apply_weights_OP = tf.matmul(X, weights, name="apply_weights") 
add_bias_OP = tf.add(apply_weights_OP, bias, name="add_bias") 
activation_OP = tf.nn.sigmoid(add_bias_OP, name="activation") 

cost_OP = tf.nn.l2_loss(activation_OP-yGold, name="squared_error_cost") 

optimizer = tf.train.AdamOptimizer(0.001) 
global_step = tf.Variable(0, name='global_step', trainable=False) 
training_OP = optimizer.minimize(cost_OP, global_step=global_step) 

correct_predictions_OP = tf.equal(
    tf.argmax(activation_OP, 0), 
    tf.argmax(yGold, 0) 
) 

accuracy_OP = tf.reduce_mean(tf.cast(correct_predictions_OP, "float")) 

newCost, train_accuracy, _ = sess.run(
    [cost_OP, accuracy_OP, training_OP], 
    feed_dict={ 
     X: trainX[indice_bas: indice_haut], 
     yGold: trainY[indice_bas: indice_haut] 
    } 
) 

おかげ

答えて

0

ではなく、L2損失のcross entropyを使用してみてください、また、お使いの出力層の上に活性化機能を持つには本当の意味がありません。

テンソルフローに付属している例には、実際に試しているものに非常に似ているbasic modelがあります。

btw:学習しようとしている問題が単純な線形モデル(つまり、何をしようとしているか)で解決できない場合もあります。深いモデルを使用してみてください。ここに深い2層の例がありますmultilayer perceptron

+0

私はつぶやきのバイナリ分類をしています。私は既にクロスエントロピー(cost_OP = -tf.reduce_sum(yGold * tf.log(activation_OP)))を試みましたが、トレーニング中の精度は99%でした。テストセットでは100%の精度が得られました。おそらく私は隠れた層を追加しようとするべきです。 – fhe