导入库
我们先从导入相关库开始。这里我们导入TensorFlow,并将其简称为tf来方便使用。
然后,我们导入一个名为numpy的库,该库可以帮助我们轻松地将数据表示为列表。
将神经网络定义为一组顺序层的框架称为keras,我们也将其导入。
import tensorflow as tf
import numpy as np
from tensorflow import keras
定义并编译神经网络
下面,我们将创建最简单的神经网络。它具有1层,并且该层只有1个神经元,其输入值也只有一个。
model = tf.keras.Sequential([keras.layers.Dense(input_shape=[1], units=1)])
现在,我们开始编译神经网络。在做之前,我们必须指定两个函数,一个是损失函数,一个是优化器。
假设我们的函数中,数字之间的关系为。当计算机尝试“学习”时,会做出猜测,也许认为数字之间满足。损失函数根据已知的正确答案来衡量猜测的答案,并衡量其执行的好坏程度。
然后,它使用optimizer函数进行另一个猜测。基于损失函数的运行方式,它将尝试使损失最小化。到那时,也许会得到类似的结果,虽然此时的结果仍然很糟糕,但是更接近正确的结果。
它将重复此操作,最终重复的数量由epochs给出。但是首先,我们要告它所要使用的方法,即对损失使用均方误差,对optimizer使用随机梯度下降方法。
model.compile(optimizer='sgd', loss='mean_squared_error')
提供数据
接下来,我们将输入一些数据,取6组输入与输出。
x = np.array([-1.0, 0.0, 1.0, 2.0, 3.0, 4.0], dtype=float)
y = np.array([-3.0, -1.0, 1.0, 3.0, 5.0, 7.0], dtype=float)
训练神经网络
训练神经网络的过程,是调用model.fit来学习x与y之间的关系。
model.fit(x, y, epochs=100)
经过上述步骤之后,我们得到了一个训练后的神经网络,它已经学习到了x与y之间隐藏的数学关系。我们使用model.predict方法来找出未知的x所对应的y。例如,如果x=10,y将会是什么?根据我们知道y应该是19,那么神经网络给我们的输出是多少?
print(model.predict([10.0]))
我们可以看到,预测的结果与我们期望的19非常接近。
code
import tensorflow as tf
import numpy as np
from tensorflow import keras
model = tf.keras.Sequential([keras.layers.Dense(input_shape=[1], units=1)])
model.compile(optimizer='sge', loss='mean_squared_error')
x = np.array([-1.0, 0.0, 1.0, 2.0, 3.0, 4.0], dtype=float)
y = np.array([-3.0, -1.0, 1.0, 3.0, 5.0, 7.0], dtype=float)
model.fit(x, y, epochs=100)
print(model.predict([10.0]))
网友评论