这是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
答案 0 :(得分:1)
最后一行只返回具有最高值的神经元的索引,在matlab / octave中
[M, I] = max(A, [], dim)
存储I
A
个dim
个,其中维度h2
中的值最高。在你的情况下,cl(x) = arg max_i f_i(x)
激活了每个输出神经元,并且从你的神经网络构建 - 分类只是具有最高值的那个的索引,
DrawerLayout