2017-04-22 4 views
0

テンソルフローでニューラルネットワークにレイヤーを追加しようとしていますが、ここではこのエラーが発生しています。TensorFlowエラーでさらにレイヤーを追加する

ValueError: Dimensions must be equal, but are 256 and 784 for 'MatMul_1' (op: 'MatMul') with input shapes: [?,256], [784,256]. 

これは私がウェイトとバイアスを作成する方法です。私は私のモデル

# 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におそらくあるのはここ

# 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])) 
} 

です。私はMNISTデータセットを使用しています。そしてまた、XY、xflatは問題がレイヤ1とレイヤ2の両方を入力するために行われていることである

x shape is (?, 28, 28, 1) 
y shape is (?, 10) 
x flat shape is (?, 784) 

答えて

1
おそらく、レイヤ1のために異なる重みとバイアスを使用する必要があり

およびレイヤ2

に整形されていますレイヤー1のサイズは256です。レイヤー2はそれに対応していません。

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'] 
+0

はいofcourseの

は、具体的には、この行に乗算してみ行列layer_1weights['hidden_layer']は、互換性のない大きさを持っています、そういうシンプルなものだった,,,私は私が同じ重みと偏りを使っています。ありがとうございました。私は1時間強くストレスを感じていましたが、それを完全に無視しました。 ありがとうございます。 –

関連する問題