我创建了一个带有一个隐藏层的神经网络。我可以使用最小化功能吗? 传递两个Theta矩阵以最小化的方法是什么。我试图在Theta上使用flatten然后使用
连接它们np.concatenate.
thetaFlat = np.concatenate((initial_Theta1.flatten(),initial_Theta2.flatten()),axis=0)
在我的成本和渐变函数中,我正在根据索引检索thetas,然后重新整形。
theta1=(thetaFlat[0:(hiddenLayerSize*(inputLayerSize+1))]).reshape(hiddenLayerSize,(inputLayerSize+1))
theta2=(thetaFlat[(hiddenLayerSize*(inputLayerSize+1)):len(thetaFlat)]).reshape(num_labels,(hiddenLayerSize+1))
这种做法是否正确? 然而,这种方法在Octave中使用,但是在那里平坦化是在列中并且在Python中它的rowise。
Python中训练集的性能约为80%。虽然在Octave中有96%。所以我对这种方法持怀疑态度。如果可用于Python上的神经网络,或者任何其他优化函数
,也请建议任何更好的选项问候 Souvik Saha Bhowmik
答案 0 :(得分:0)
这是一种有效且非常有效的方法。请记住仔细检查你的展平和不平整操作是否是彼此反转(只需将它们定义为两个函数,平坦和不平整,并检查x == unflat(flat(x))是否为许多随机x')。最终模型的差异有很多可能的原因,但扁平化不是其中之一。