我试着用2个隐藏层和3个输出类构建一个简单的MLP。我在模型中所做的是:
-
输入图像为120x120 rgb图像。扁平尺寸(3 * 120 * 120)
-
2个大小为100的隐藏层。
-
使用Relu激活
-
输出层有3个神经元
def model(input, weights, biases):
l_1 = tf.add(tf.matmul(x, weights['h1']), biases['b1'])
l_1 = tf.nn.relu(l_1)
l_2 = tf.add(tf.matmul(l_1, weights['h2']), biases['b2'])
l_2 = tf.nn.relu(l_2)
out = tf.matmul(l_2, weights['out']) + biases['out']
return out
优化器pred = model(input_batch, weights, biases)
cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(pred, y))
optimizer = tf.train.GradientDescentOptimizer(rate).minimize(cost)
然而,该模型不起作用。其精度仅等于随机模型的精度。下面的例子是:https://github.com/aymericdamien/TensorFlow-Examples/blob/master/examples/3_NeuralNetworks/multilayer_perceptron.py
标题>您在def model
中有复制粘贴错字。第一个参数名称是input
,而下一行是x
。
当你怀疑模型没有被训练时,可以使用的另一个技巧是在同一批数据上一次又一次地运行它。如果实现是正确的,并且模型正在接受训练,它很快就会记住批次,产生100%的准确率。