这次提到了怎样建造一个完整的神经网络, 包括添加 神经层, 计算误差, 训练步骤, 判断是否在学习.
1. add_layer 功能
首先,我们导入本次所需的模块
1 | import tensorflow as tf |
TensorFlow随机值: tf.random_normal函数: 将返回一个指定形状的张量,通过随机的正常值填充
tf.random_normal(shape, mean=0.0, stddev=1.0, dtype=tf.float32, seed=None, name=None)
2. 导入数据
构建所需的数据。
这里的 x_data
和 y_data
并不是严格的一元二次函数的关系,因为我们多加了一个 noise
, 这样看起来会更像真实情况
1 | x_data = np.linspace(-1,1,300, dtype=np.float32)[:, np.newaxis] |
接下来,我们就可以开始定义神经层了。 通常神经层都包括 input输入层、hide隐藏层 和 output输出层。这里的输入层只有一个属性, 所以我们就只有一个输入;隐藏层我们可以自己假设,这里我们假设隐藏层有10个神经元; 输出层和输入层的结构是一样的,所以我们的输出层也是只有一层。 所以,我们构建的是——输入层1个、隐藏层10个、输出层1个的神经网络。
3. 搭建网络
1 | # 定义 hide隐藏层, 利用之前的 `add_layer()` 函数,这里使用 Tensorflow 自带的激励函数 `tf.nn.relu`。 |
4. 训练
下面,让机器开始学习。
比如这里,我们让机器学习1000次。机器学习的内容是 train_step
, 用 Session
来 run
每一次 training 的数据,逐步提升神经网络的预测准确性。 (注意:当运算要用到 placeholder
时,就需要 feed_dict
这个字典来指定输入。)
1 | for i in range(1000): |
在电脑上运行本次代码的结果为:
0.0587868
0.00416427
0.00312624
0.00291327
0.00282026
0.0027577
0.00270546
0.00266943
0.00265278
0.00263559
通过上图可以看出,误差在逐渐减小,这说明机器学习是有积极的效果的
Checking if Disqus is accessible...