Notes: 神经网络搭建 Coding

- 1 分钟前

神经网络基本架构的三个接口

  1. 初始化 initialisation: 设置输入层、中间层和输出层的节点数(参数);
  2. 训练 train: 根据训练数据不断更新权重值;相当于 pytorch 中的 forward 函数。
  3. 查询 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

自我训练的过程分为两步:

  1. 计算输入训练数据,给出网络的计算结果;
  2. 将计算结果与正确结果相比,获取误差值,采用误差反向传播更新网络里的权值。

输出层结点数确定:比如说 MINST 手写字数据集,输出结果是 0-9,所以输出层有 10 个节点,每个节点对应一个 label。假设图片对应的数字是 0,那么输出层网络中,第一个节点输出一个高百分比数值3,其他节点的百分比输出低。

Inger Chao(赵琦)

Inger Chao(赵琦)

CS 研二在读

Inger Notes © 2020
rss facebook twitter github gitlab youtube mail spotify lastfm instagram linkedin google google-plus pinterest medium vimeo stackoverflow reddit quora qq quora wechat