gpt4 book ai didi

machine-learning - tensorflow 形状不正确

转载 作者:行者123 更新时间:2023-11-30 09:51:34 26 4
gpt4 key购买 nike

我一直在尝试使用 Tensorflow,但我不断收到有关数据形状的错误。我从这个 YouTube 教程中获取代码:https://www.youtube.com/watch?v=PwAGxqrXSCs&list=PLQVvvaa0QuDfKTOs3Keq_kaG2P55YRn5v&index=47

我的训练数据是这样的:

enc0 = np.array([[[1,2,3,4],[0,1,0,1],[-33,0,0,0],[1,1, 1,1]],[[2,3,3,2],[0,0,0,0],[9,0,0,0],[0,0,0,1]]]) #形状 (2,4,4)
ms0 = np.array([[1,6],[2,7]]) # 形状(2,2)

我的错误是这样的:

ValueError: Dimension size must be evenly divisible by 10 but is 4 for 'gradients/Reshape_grad/Reshape' (op: 'Reshape') with input shapes: [1,4], [2].

我相信我的错误是由于这些行而发生的:

x = tf.placeholder('float',[None,16])
y = tf.placeholder('float',[4])

enc = enc0.reshape([-1,16])

我的整个代码是这样的:

enc0 = np.array([[[1,2,3,4],[0,1,0,1],[-33,0,0,0],[1,1,1,1]],[[2,3,3,2],[0,0,0,0],[9,0,0,0],[0,0,0,1]]])
ms0 = np.array([[1,6],[2,7]])

n_nodes_hl1 = 500 # hidden layer 1
n_nodes_hl2 = 500
n_nodes_hl3 = 500

n_classes = 10
batch_size = 100 # load 100 features at a time


x = tf.placeholder('float',[None,16])
y = tf.placeholder('float',[4])

enc = enc0.reshape([-1,16])
ms = ms0


def neuralNet(data):
hl_1 = {'weights':tf.Variable(tf.random_normal([16, n_nodes_hl1])),
'biases':tf.Variable(tf.random_normal([n_nodes_hl1]))}

hl_2 = {'weights':tf.Variable(tf.random_normal([n_nodes_hl1, n_nodes_hl2])),
'biases':tf.Variable(tf.random_normal([n_nodes_hl2]))}

hl_3 = {'weights':tf.Variable(tf.random_normal([n_nodes_hl2, n_nodes_hl3])),
'biases':tf.Variable(tf.random_normal([n_nodes_hl3]))}

output_layer = {'weights':tf.Variable(tf.random_normal([n_nodes_hl3, n_classes])),
'biases':tf.Variable(tf.random_normal([n_classes]))}

l1 = tf.add(tf.matmul(data, hl_1['weights']), hl_1['biases'])
l1 = tf.nn.relu(l1)

l2 = tf.add(tf.matmul(l1, hl_2['weights']), hl_2['biases'])
l2 = tf.nn.relu(l2)

l3 = tf.add(tf.matmul(l2, hl_3['weights']), hl_3['biases'])
l3 = tf.nn.relu(l3)

ol = tf.matmul(l3, output_layer['weights']) + output_layer['biases']

return ol


def train(x):
prediction = neuralNet(x)
print prediction
cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits=prediction,labels=y))
optimizer = tf.train.AdamOptimizer().minimize(cost) # learning rate = 0.001

# cycles of feed forward and backprop
num_epochs = 15

with tf.Session() as sess:
sess.run(tf.global_variables_initializer())

for epoch in range(num_epochs):
epoch_loss = 0
for _ in range(int(enc.shape[0])):
epoch_x,epoch_y = enc,ms
_,c = sess.run([optimizer,cost],feed_dict={x:epoch_x,y:epoch_y})
epoch_loss += c
print 'Epoch', epoch + 1, 'completed out of', num_epochs, '\nLoss:',epoch_loss,'\n'

correct = tf.equal(tf.argmax(prediction,1),tf.argmax(y,1))
accuracy = tf.reduce_mean(tf.cast(correct,'float'))

print 'Accuracy', accuracy.eval({x:enc, y:ms})


train(x)

任何有关该错误的帮助将不胜感激。

最佳答案

原因是您正在从网络生成 n_classes 预测(n_classes 为 10),同时将其与 y 中的 4 个值进行比较> 占位符。应该够用了

y = tf.placeholder('float', [10])

然后实际向占位符提供 10 个值。

关于machine-learning - tensorflow 形状不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44253129/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com