我正在使用一个非常简单的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]
}
)
由于
答案 0 :(得分:0)
尝试使用cross entropy代替L2丢失,在输出层上设置激活功能也没有意义。
附带tensorflow的示例实际上有basic model,与您尝试的非常相似。
顺便说一句:也许你想要学习的问题根本无法通过简单的线性模型解决(即你想要做的事情),尝试使用更深层的模型。以下是2层深multilayer perceptron的示例。