可以将scipy.optimize.minimize用于Python中的神经网络

时间:2016-10-29 04:46:12

标签: python machine-learning neural-network

我创建了一个带有一个隐藏层的神经网络。我可以使用最小化功能吗? 传递两个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

1 个答案:

答案 0 :(得分:0)

这是一种有效且非常有效的方法。请记住仔细检查你的展平和不平整操作是否是彼此反转(只需将它们定义为两个函数,平坦和不平整,并检查x == unflat(flat(x))是否为许多随机x')。最终模型的差异有很多可能的原因,但扁平化不是其中之一。