Notes: 神经网络搭建 Coding
- 1 分钟前神经网络基本架构的三个接口
- 初始化 initialisation: 设置输入层、中间层和输出层的节点数(参数);
- 训练 train: 根据训练数据不断更新权重值;相当于 pytorch 中的 forward 函数。
- 查询 query: 新的数据输入给神经网络,网络计算后给出答案(预测值)。
pytorch 官方文档:
In the forward function, you define how your model is going to be run, from input to output.
隐藏层层数和节点数可以适当调整,过多可能会造成过拟合。
神经网络的数据一定是矩阵,所以在输入前要把其他格式的数据转成矩阵。
在把数据输入到网络模型之前,把数据做归一化处理(reshape
)。表示图片的二维数组种,每个数大小都不超过 255,因此只要把所有数组除以 255,就能让所有数据全部落入到 0 到 1 之间。有些数值由于太小除以 255 会变为 0,会导致链路权重更新出现问题,因此可以把除以 255 的结果先乘以 0.99 再加上 0.01,这样所有数据就处于 0.01 到 1 之间。
scaled_input = image_array / 255.0 * 0.99 + 0.01
自我训练的过程分为两步:
- 计算输入训练数据,给出网络的计算结果;
- 将计算结果与正确结果相比,获取误差值,采用误差反向传播更新网络里的权值。
输出层结点数确定:比如说 MINST 手写字数据集,输出结果是 0-9,所以输出层有 10 个节点,每个节点对应一个 label。假设图片对应的数字是 0,那么输出层网络中,第一个节点输出一个高百分比数值3,其他节点的百分比输出低。