神经网络八度音程实现

时间:2013-02-07 22:15:01

标签: python machine-learning neural-network octave

任何人都可以解释一下:

Theta1_grad(:, 1) = Theta1_grad(:, 1) ./ m;

Theta1_grad(:, 2:end) = Theta1_grad(:, 2:end) ./ m + ((lambda/m) * Theta1(:, 2:end));

我在python中实现,我不知道Octave,我刚刚发现了这个神经网络实现,但我不明白这是做什么的。

参考:http://feature-space.com/en/document49.pdf - 第12页(2.5)

编辑:

没关系,我认为它试图不修改第一列。

1 个答案:

答案 0 :(得分:3)

Theta1_grad(:, 1)获取矩阵Theta1_grad的第一列,然后将此向量的每个元素除以m

的值

Theta1_grad(:, 2:end)获取矩阵的其余部分从第2列开始到结尾(基本上除了第一列之外的所有列)

通常,第一列设置为1以允许估计模型截距

通常,在Octave中算术运算之前使用.意味着逐个元素操作,例如,A * B是正常的矩阵乘法,但A .* B是逐个元素乘法

阅读a quick Octave,会对你有帮助。

修改

该等式用于正则化神经网络(以降低过度拟合风险)

 Theta1_grad(:, 2:end) = Theta1_grad(:, 2:end) ./ m + ((lambda/m) * Theta1(:, 2:end));

我没有看到整个代码,但我相信lambda 学习率,它是正则化参数(或惩罚),它乘以Theta1本身渐变。