2017-04-22 8 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는

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

답변

1

당신은 아마 레이어 1과 레이어에 대해 서로 다른 무게와 편견을 사용해야로 재편된다 2.

문제는 그 층 (2) 입력을 위해 만들어진 레이어 1 두 그러나 레이어 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

예 당연히

는 특히이 줄을 곱하려고 행렬 layer_1weights['hidden_layer'] 호환되지 않는 크기가 , 그건 단순한 일 이었어. ,,, 내가 완전히 잊었다. 같은 가중치와 바이어스를 사용합니다. 고마워요, 한 시간 동안 강조하고 있었고 완전히 무시했습니다. 감사합니다. –