Python中的神经网络在权值矩阵形状和反向支撑方面存在问题

2024-09-30 06:16:58 发布

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

我一直在努力用纯python编写一个神经网络。我在试着让它识别出我的图像。在

我想我在初始化权重时一定是做错了什么。在

我的假设是,因为MNIST数据是形状为28x28的数据,所以第一组权重应该是形状(28左右),最后一组权重的形状应该是(X,1),X是数据集中的类数。在

有一件事我很困惑,我的结束矩阵(下面的变量l5)有形状(28,1)。要使输出具有(9,1)的形状,我需要做什么?我已经打印了这些形状,并意识到我对NNs和线性代数的理解存在差距:

l5 shape: (28, 1)
l4 shape: (28, 9)
l3 shape: (28, 14)
l2 shape: (28, 21)
l1 shape: (28, 28)

我想理论上我可以做一个支持向量机(SVM),用一个矩阵(784,9)将形状(784,1)的(平坦)图像多重化,但我不确定这是否是唯一的方法,如果在现实中,我已经远远偏离了目标。在

以下代码基于本教程:http://iamtrask.github.io/2015/07/12/basic-python-network/

^{pr2}$

另外,我知道反向传播是根据适应度函数来寻找输出的梯度,并更新权重,以使误差最小化(我现在想起来可能会忽略它?)。我不明白为什么在更新权重和计算层错误时必须转换层。

我得到的当前错误如下,但我确信我的代码有其他错误

Traceback (most recent call last):
  File "C:\Users\Username\Development\Python\updatedKernel.py", line 128, in <module>
    main()
  File "C:\Users\Username\Development\Python\updatedKernel.py", line 104, in main
    l4_error = l5_delta.dot(syn4.T)
ValueError: shapes (28,9) and (1,9) not aligned: 9 (dim 1) != 1 (dim 0) 

Tags: 数据代码图像错误username矩阵usersfile
1条回答
网友
1楼 · 发布于 2024-09-30 06:16:58

通常

输入(MNIST data)的形状是(nb_samples_in_bath,input_dimensions),其中input_dimensions=784=28*28

第一组权重的形状是(input_dimensions,hidden_dimensions),其中input_dimensions=784=28*28,hidden_dimensions由用户设置(通常应与输入的_维数的数量级相同)。在

第二个权重的形状是(隐式维数,nb_classes),其中nb_class=10(对于MNIST中的10位数字)。在

最终输出的形状应该是(nb_samples_in_batch,nb_classes)

相关问题 更多 >

    热门问题