cover_002.PNG
机器学习模型可以简单理解函数, 接受一个输入然后经过函数得到一个输出的算法. 当使用神经网络时, 那么神经网络就是是模型还是算法, 个人因为应该算算法. 神经网络大家可以将其理解为复杂的模型, 这个模型有大量参数, 所以需要一定算力而且神经网络求解过程是简单暴力的.
定义模型
我们先把这次分享完成代码抛出了, 然后逐行解释
- function createModel() {
- // Create a sequential model
- const model = tf.sequential();
- // Add a single input layer
- model.add(tf.layers.dense({inputShape: [1], units: 1, useBias: true}));
- // Add an output layer
- model.add(tf.layers.dense({units: 1, useBias: true}));
- return model;
- }
初始化一个容器
const model = tf.sequential();
这实例化了一个 tf.Model 对象, sequential 有点类似一个容器, 我们可以将神经网络的层结构一层一层堆叠到容器, 输入的数据会经过这些层后输出一个结果.
也存在多个输入和输出的模型, 但在许多情况下, 我们的模型将是顺序执行的.
model.add(tf.layers.dense({inputShape: [1], units: 1, useBias: true}));
创建好容器后, 我们就可以添加 layer 到的网络中, 它自动连接到一个有一个隐藏单元的密集层.
在 Tensorflow 提供事先定义好层, dense layer 全连接层是一种比较简单, 如果大家不了解, 就可以将其简单理解为一个线性方程, y = wx + b, 不过因为输入一批样本所以, w 通常为一个矩阵 (称为权重), 输入数据乘以矩阵 w 在加上一个偏置 b , 这里 b 也是一个向量. 这样我们就定义好了网络的第一层.
在解释一下参数 inputShape, 因为数据只有一个特征作为输入所以 inputShape 是 [1].
units 设定了该层中的权重矩阵的大小, 它设置为 1, 表示每个数据的输入特征是 1 所以只有 1 个权重.
提示: 全连接层默认带有一个偏置项, 默认情况下 useBias 的值为 true
model.add(tf.layers.dense({units: 1}));
其实这一层是神经网络的输出层, units 设置为 1, 输出 1 个数值.
提示: 隐藏层有 1 个单元, 实际上没有必要添加最终的输出层, 也就是说可以把隐藏层作为输出层. 然而, 定义一个输出层可以让以后可以修改隐藏层的单元数, 仅此而已.
实例化
- // Create the model
- const model = createModel();
- tfvis.show.modelSummary({
- name: 'Model Summary'
- }, model)
截屏 2021-06-25 下午 12.36.54.PNG
来源: http://www.jianshu.com/p/352cfb2ffbe4