我试图在张量流中向神经网络添加更多图层,但在这里我收到了这个错误。
ValueError: Dimensions must be equal, but are 256 and 784 for 'MatMul_1' (op: 'MatMul') with input shapes: [?,256], [784,256].
这就是我创建权重和偏见的方式。
# Store layers weight & bias
weights = {
'hidden_layer': tf.Variable(tf.random_normal([n_input, n_hidden_layer])),
'out': tf.Variable(tf.random_normal([n_hidden_layer, n_classes]))
}
biases = {
'hidden_layer': tf.Variable(tf.random_normal([n_hidden_layer])),
'out': tf.Variable(tf.random_normal([n_classes]))
}
这是我制作模特的地方
# Hidden layer with RELU activation
layer_1 = tf.add(tf.matmul(x_flat, weights['hidden_layer']), biases['hidden_layer'])
layer_1 = tf.nn.relu(layer_1)
layer_1 = tf.nn.dropout(layer_1, keep_prob)
layer_2 = tf.add(tf.matmul(layer_1, weights['hidden_layer']), biases['hidden_layer'])
layer_2 = tf.nn.relu(layer_2)
layer_2 = tf.nn.dropout(layer_2, keep_prob)
# Output layer with linear activation
logits = tf.matmul(layer_2, weights['out']) + biases['out']
错误很可能是在layer_2中。我正在使用MNIST数据集。并且x y,xflat被重新整形为
x shape is (?, 28, 28, 1)
y shape is (?, 10)
x flat shape is (?, 784)
答案 0 :(得分:1)
您应该对第1层和第2层使用不同的权重和偏差。
问题在于第1层和第2层都是为大小为784的输入而制作的。但第1层的输出大小为256,因此第2层无法使用它。
具体而言,您尝试在此行中相乘的矩阵./mongod
和layer_1
具有不兼容的大小:
weights['hidden_layer']
这可能会改为:
layer_2 = tf.add(tf.matmul(layer_1, weights['hidden_layer']), biases['hidden_layer'])
和
# Store layers weight & bias
weights = {
'layer_1': tf.Variable(tf.random_normal([n_input, n_hidden_layer])),
'layer_2': tf.Variable(tf.random_normal([n_hidden_layer, n_hidden_layer])),
'out': tf.Variable(tf.random_normal([n_hidden_layer, n_classes]))
}
biases = {
'layer_1': tf.Variable(tf.random_normal([n_hidden_layer])),
'layer_2': tf.Variable(tf.random_normal([n_hidden_layer])),
'out': tf.Variable(tf.random_normal([n_classes]))
}