有人能解释一下Coursera机器学习课程中识别数字的那段代码吗?

这是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 = 像素强度值的1×784矩阵。Theta1 = 100×785矩阵。Theta2 = 10×101矩阵。

我已经训练了网络,并得到了Theta1和Theta2的最佳值。我想知道的是最后一行代码是如何处理前向传播的值,并在p中存储1/2/3/4/5/6/7/8/9/10的。存储的任何数字都是预测的数字。

igmoid函数:

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

回答:

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

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

A中具有最高值的索引存储在I中,维度为dim。在你的例子中,h2包含每个输出神经元的激活值,并且根据你的神经网络的构造 – 分类只是具有最高值的那个的索引,

cl(x) = arg max_i f_i(x)

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注