查看数组维度的方法,python列表的维度
再次使用PythonNumPy和array很难做一些矩阵之间的计算。
可能不起作用的代码部分如下。
训练,测试,cv=NP。Array_split(data,3,axis=0)).
训练输入=训练[ :-1 ]
测试输入=测试[ :-1 ]
cv _ inputs=cv [ :-1 ]
训练输出=训练[:-1]
测试输出=测试[:-1]
cv_outputs=cv[:-1]
打印这些矩阵信息(分别是np.ndim、np.shape和dtype)会得到什么?
2
一个
2
一个
2
一个
(94936,30 )
(94936,)
(94936,30 )
(94936,)
(94935,30 )
(94935,)
浮动64
浮动64
浮动64
浮动64
浮动64
浮动64
我认为所有*_output数组都缺少一个维度。
另一个所需的矩阵由以下命令创建。
新矩阵=神经元层(30,94936))))))))))))))))).
由neuronLayer定义的类别:
类新闻层():
def __init__(自身,神经元,神经元_输入) :
self . weights=2 * NP . random . random((神经元_输入,神经元))- 1
这是最终输出:
输出层1=自身。_ _ sigmoid (NP.dot)输入,自身层1.weights))
值错误:形状(94936,30)和)94936,30)未对齐:30(dim1)!=94936(dim0)
Python明确告诉我矩阵没有加起来,但我不知道问题出在哪里。
有小费吗?
PS:将完整的代码粘贴到。
解决办法
1=神经元层(30,94936) # 29个神经元,有227908个输入
第2层=神经元层(1,30) # 1神经元,没有先前的29个输入
NueronLayer是在哪里成立的?
self . weights=2 * NP . random . random((神经元_输入,神经元))- 1
两个权重分别为[94936,30]和[30,1]。
这条线没有任何意义。我很惊讶这没有任何问题
第1层错误=第2层dot(self . layer 2 . weights . NP . transit))。
不知道你要不要NP?转置(自我。layer2.weights)或自身
但它可能不在那里。列车第一次被称为think (94936,30)输入。
输出层1=自身。_ _ sigmoid (NP.dot)输入,自身层1.weights))
输出层2=自身。_ _ sigmoid (NP.dot)输出layer1,self.layer2.weights)
因此,np.dot2的两个(94936,30),94936,30)序列尝试执行A运算。那些观点是不相容的。您可以交替生成(94936,94936)数组或(30,30)数组。一个太大了。(30,30)与第二层重量兼容。
NP.dot(inputs.t,自身层1.weights)).
有一个工作机会。
NP.dot(outputlayer1,self.layer2.weights).
(30,30 ) with (30,1 )=(30,1)))).
但是你呢?
训练_输出-输出层2
不管train_outputs是(94936,)还是(94936,1),都有问题。
在计算过程中,我们必须确保数组的形状正确流动。不要一开始就检查它们。和内部检查。另外,你需要知道每一步应该是什么形状。
用更少的输入和层数,比如10个样本和3个函数,就很容易开发和测试这个代码。这显示了值和形状。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。