使用TensorFlow错误添加更多图层

时间:2017-04-22 20:26:40

标签: tensorflow mnist

我试图在张量流中向神经网络添加更多图层,但在这里我收到了这个错误。

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)

1 个答案:

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