有人可以解释这段识别Coursera机器学习课程中的数字的代码

时间:2016-05-19 14:40:00

标签: algorithm matlab machine-learning neural-network octave

这是Coursera机器学习课程练习4的预测功能的片段。它的作用是将经过训练的神经网络中的预测数字存储在p中。有人可以解释它是如何做到的吗?

    function p = predict(Theta1, Theta2, x)
    p = 0;
    h1 = sigmoid(double([1 x]) * Theta1');
    h2 = sigmoid([1 h1] * Theta2');
    [dummy, p] = max(h2, [], 2);
    end

x = 1x784像素强度值矩阵。 Theta1 = 100x785矩阵。 Theta2 = 10x101矩阵。

我已经训练过网络并且已经获得了Theta1和Theta2的最佳值。我想知道的是最后一行代码如何获取前向传播的值并将p / 1中的1/2/3/4/5/6/7/8/9/10存储起来。存储的数字是预测数字。

Sigmoid功能:

function g = sigmoid(z)
g = 1 ./ (1 + e.^-z);
end

1 个答案:

答案 0 :(得分:1)

最后一行只返回具有最高值的神经元的索引,在matlab / octave中

[M, I] = max(A, [], dim)

存储I Adim个,其中维度h2中的值最高。在你的情况下,cl(x) = arg max_i f_i(x) 激活了每个输出神经元,并且从你的神经网络构建 - 分类只是具有最高值的那个的索引,

DrawerLayout