机器学习笔记 // 创建并训练DNN来拟合和预测序列数据
DNN是“Deep Neural Network”的缩写,中文译为深度神经网络。
dataset = windowed_dataset(series, window_size, batch_size, shuffle_buffer_size)
model = tf.keras.models.Sequetial([
tf.keras.layers.Dense(10, input_shape=[window_size],
activation='relu'),
tf.keras.layers.Dense(10, activation='relu'),
tf.keras.layers.Dense(1)])
这是一个非常简单的DNN模型,它包含两个密集层,第一层接收的输入形状是window_size,第二个是包含预测值的输出层。
与之前一样,这个模型在编译时使用一个损失函数和一个优化器。在这个例子中损失函数被指定为mse(均方误差),优化器为sgd(随机梯度下降)。SGD接收参数作为学习率(lr)和动量,这些参数调整优化器的学习方式。每一个数据集都不一样,因此最好能控制它们。在下一节中,你会看到如何求出最优值,但现在只需要像这样设置它们:
mdel.compile(loss="mse", optimizer=tf.keras.optimizaers.SGD(lr=1e-6,momentum=0.9))
接下来调用model.fit训练,将你的数据集传给它,然后指定训练的回合数:
model.fit(dataset,epochs=100,verbose=1)
训练好以后,就可以开始使用它进行预测。
print(series[start_point:start_point+window_size])
print(series[start_point+window_size])
print(model.predict(
series[start_point:start_point+window_size][np.newaxis]))