使用 TensorFlow Error 添加更多层
Adding more layers with TensorFlow Error
我正尝试在张量流中向我的神经网络添加更多层,但我收到此错误。
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 层和第 2 层使用不同的权重和偏差。
问题是第 1 层和第 2 层都是为大小为 784 的输入创建的。但是第 1 层的输出大小为 256,因此第 2 层无法使用它。
特别是您尝试在该行中相乘的矩阵 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]))
}
和
# Hidden layer with RELU activation
layer_1 = tf.add(tf.matmul(x_flat, weights['layer_1']), biases['layer_1'])
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['layer_2']), biases['layer_2'])
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']
我正尝试在张量流中向我的神经网络添加更多层,但我收到此错误。
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 层和第 2 层使用不同的权重和偏差。
问题是第 1 层和第 2 层都是为大小为 784 的输入创建的。但是第 1 层的输出大小为 256,因此第 2 层无法使用它。
特别是您尝试在该行中相乘的矩阵 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]))
}
和
# Hidden layer with RELU activation
layer_1 = tf.add(tf.matmul(x_flat, weights['layer_1']), biases['layer_1'])
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['layer_2']), biases['layer_2'])
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']