ValueError:形状(64,28,28)和(784,50)未对齐:28(尺寸2)!=784(尺寸0)

2024-09-28 03:12:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试创建我的第一个神经网络。我想从我的神经网络来预测哪个数字是在28x28输入(我使用的是MNIST数据库)。数据库通过Tensorflow导入。你知道吗

我的xu测试的形状是10000,28,28。10000表示输入的数量,28x28表示高度和宽度。你知道吗

我的错误是:

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-55-a6dbf7a3d2aa> in <module>
      1 layer_dims = [784, 50, 20, 10]
----> 2 parameters = model(x_test , y_test, layer_dims)

<ipython-input-35-e0593be872fa> in model(X, Y, layers_dims, optimizer, learning_rate, mini_batch_size, mainActiv, lastActiv, num_epochs, beta, beta1, beta2, epsilon)
     28         for minibatch in minibatches:
     29             (minibatch_X, minibatch_Y) = minibatch
---> 30             a3, cache = forward_propagation(minibatch_X, minibatch_Y, parameters)
     31             cost = compute_cost(a3, minibatch_Y)
     32             grads = L_model_backward(a3, Y, caches, mainActiv)

<ipython-input-15-fc8fba0d23d7> in forward_propagation(X, Y, parameters)
      7         A_prev = A
      8         print("A shape = " + str(A.shape))
----> 9         A, cache = lin_activ_forward(A_prev, parameters["W" + str(l)], parameters["b" + str(l)], activation = "relu")
     10         caches.append(cache)
     11     AL, cache = lin_activ_forward(A, parameters["W" + str(L)], parameters["b" + str(L)], activation = "sigmoid")

<ipython-input-14-760f9d3070ba> in lin_activ_forward(A_prev, W, b, activation)
      9         print("activ b" + str(b.shape))
     10 
---> 11         Z, lin_cache = lin_feedforward(A_prev, W, b)
     12         print("activ Z" + str(Z.shape))
     13         A, activ_cache = relu(Z)

<ipython-input-54-9a032d2cf624> in lin_feedforward(A_prev, W, b)
      1 def lin_feedforward(A_prev, W, b):
      2     #A_prev - aktivace z předchozích vrstev
----> 3     Z = np.dot(A_prev,W) +b #maybe multiply here???
      4     assert(Z.shape == (W.shape[0], A_prev.shape[1]))
      5     print("W1 shape" + str(W1.shape))

ValueError: shapes (64,28,28) and (784,50) not aligned: 28 (dim 2) != 784 (dim 0)

我想主要的错误来自np.dot公司乘法本身,因为我的变量的形状是错误的。关键是我不知道怎么解决这个问题?我知道了,输入层应该是784个输入(每个像素28x28个),对吧?如何在三维矩阵和二维矩阵上使用点积?我对广播略知一二,但找不到解决办法

谢谢你的建议!你知道吗


Tags: incacheinput错误ipythonforwardparametersprint

热门问题