TensorFlow为什么我的成本函数不会减少?

时间:2017-01-07 18:18:52

标签: python tensorflow neural-network

我正在使用一个非常简单的NN,并将标准化的word2vec作为输入。 在运行我的火车时(基于迷你批次),火车成本大约在1020左右开始减少1000左右但从不低于此值,我的准确率大约为50%。

为什么成本不降低?如何在每次运行时验证weigth矩阵是否更新?

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]
    }
)

由于

1 个答案:

答案 0 :(得分:0)

尝试使用cross entropy代替L2丢失,在输出层上设置激活功能也没有意义。

附带tensorflow的示例实际上有basic model,与您尝试的非常相似。

顺便说一句:也许你想要学习的问题根本无法通过简单的线性模型解决(即你想要做的事情),尝试使用更深层的模型。以下是2层深multilayer perceptron的示例。