学习及作业
简单介绍
…….
符号表示
| Wab | 代表结点a到结点b的权重 |
|---|---|
| ya | 代表结点a的输出值 |
| Za | 代表结点a的输入值 |
| C | 最终的损失函数 |
损失函数
$$
C=\frac{1}{2}errors^2
$$
其中errors是真实值与预测值的差值,目的是为了减少损失,从而调节参数,减少损失。
例子
数据用矩阵表示就是下面这样的
$$
输入数据:
Z_a=\begin{bmatrix}
0.35\
0.9\
\end{bmatrix}
$$
$$
权重:
w_0=\begin{bmatrix}
0.1&0.8\
0.4&0.6\
\end{bmatrix}\
\
权重:
w_1=\begin{bmatrix}
0.3&0.9\
\end{bmatrix}
$$
自然语言描述算法
1.初始化,用小的随机数给各权值和阈值赋初值。
2.读取网络参数和训练样本集。
3.数据处理,可以进行归一化(数据映射到0~1,方便统一处理)。
4.对训练集中每个样本进行计算。
①前向计算隐层、输出层各神经元的输出。
②计算期望输出与网络输出的误差。
③反向计算修正网络权值和阈值。
5.若满足精度要求或其他退出条件,则结束训练,否则转步骤4继续。
6.结果分析与输出。
代码
1 | import numpy as np |
作业
numpy的使用补充
numpy函数
| 函数格式 | 用途 |
|---|---|
| np.array() | 定义数组 |
| x.shape[0] | 得到矩阵的行数 |
| x.shape[1] | 得到矩阵的列数 |
| x.reshape(N,-1) | 固定行数,-1表示行数需要计算 |
| np.dot(m,n) | m和n两个矩阵的叉乘 |
| np.sum() | 求和函数 |
| axis=0 | 返回按列相加的一个数组 |
| keepdims | 保持原有维度输出 |
| np.random.randn(m,n) | 随机生成一个维度位m*n的矩阵(元素大小在(0,1)之间) |
| np.zeros(m,n) | 生成一个m*n的元素全为0的矩阵 |
| np.maximum(0,H) | 只返回(0,H)中大的元素 |
| np.exp(x) | 计算e的x次幂 |
| np.arange(N) | 生成数组 |
| np.copy() | 函数起名,copy |
| np.log(x) | 计算以e位底的x的log值 |
softmax层函数
类似于归一化处理,目的是为了使输出的结果更为直观。那么我们能不能使得一系类预测值y变为相应的概率,概率大的就为输出的最终结果呢?当然可以。
简单来说分三步进行:
(1)以e为底对所有元素求指数幂;
(2)将所有指数幂求和;
(3)分别将这些指数幂与该和做商。
这样求出的结果中,一系列的和一定为1,而每个元素可以代表概率值。
代码:
1 | import numpy as np |