Machine Learning-Andrew Ng 课程第四周——非线性假设 & Neural Network

目录

  • 1. 图像作为输入时的训练
  • 2. 关于神经网络中Hidden Layer在编程时的注意事项
  • 3. Matlab中max()函数的用法

1. 图像作为输入时的训练

之前我们处理的输入都是一些标量,比如房子的面积、卧室数量、肿瘤的体积等等,但在实际工程应用中,很多输入比这复杂许多,比如说图像。

在此次编程作业中用到了手写数据集,每个图像都是 20 × 20 20\times20 20×20,共有5000张图片,在实际操作时,所有图片都是以向量形式输入的 20 × 20 20\times20 20×20的图片就变成一个400维的向量,而所用的参数也就是401个(加上 θ 0 \theta_0 θ0),也就是说,每个参数对应一个像素—— h θ ( θ 0 x 0 + θ 1 x 1 + θ 2 x 2 + . . . θ 400 x 400 ) h_\theta(\theta_0x_0+\theta_1x_1+\theta_2x_2+...\theta_{400}x_{400}) hθ(θ0x0+θ1x1+θ2x2+...θ400x400),所以处理高维输入并没有想象中的那么复杂。

2. 关于神经网络中Hidden Layer在编程时的注意事项

这是我在编程作业中犯的一个错误,在输入传递给Hidden Layer时,得用sigmoid函数将输入的线性组合转化为(0,1)之间的数。

X = [ones(size(X,1),1) X];
A_2 = sigmoid(X*Theta1');
A_2 = [ones(size(A_2,1),1) A_2];
[values, p] = max(A_2*Theta2',[],2);

第二行将输入层 a ( 1 ) a^{(1)} a(1) x x x)的线性组合用sigmoid函数处理,得到hidden layer的值 a ( 2 ) a^{(2)} a(2).

3. Matlab中max()函数的用法

在作业中用到了max()函数,这里列出两个比较好用的功能:
1.

 [values, indexs] = max(A)      #返回矩阵A中每一列最大的值给values,每个值在该列的位置给indexes

例:

A = [1 2 3;6 5 4];
[values indexes] = max(A)

返回:

values =

     6     5     4
indexes =

     2     2     2
 [values, indexs] = max(A, [], 2)      #返回矩阵A中每一行最大的值给values,每个值在该行的位置给indexes

例:

A = [1 2 3;6 5 4];
[values indexes] = max(A, [], 2)

输出:

values =

     3
     6


indexes =

     3
     1

你可能感兴趣的:(Machine,Learning)