下面有两组非常相似的代码,输入非常简单,作为我的问题的一个说明性示例。我认为对以下观察的解释可以某种方式回答我的问题。谢谢!
当我运行以下代码时,可以快速训练模型并预测良好的结果。
import tensorflow as tf
import numpy as np
from tensorflow import keras
model = tf.keras.Sequential([keras.layers.Dense(units=1, input_shape=[1])])
model.compile(optimizer='sgd', loss='mean_squared_error')
model.fit(xs, ys, epochs=1000)
print(model.predict([7.0]))
然而,当我运行以下代码时,它与上面的代码非常相似,模型训练非常缓慢,可能没有经过良好的训练并给出错误的预测(即,上面的代码很容易损失<1但是保持在20000,代码如下)
model = keras.Sequential()# Your Code Here#
model.add(keras.layers.Dense(2,activation = 'relu',input_shape = (1,)))
model.add(keras.layers.Dense(1))
#model.compile(optimizer=tf.train.AdamOptimizer(0.1),
#loss='mean_squared_error')
model.compile(optimizer = tf.train.AdamOptimizer(1),loss = 'mean_squared_error')
#model.compile(# Your Code Here#)
xs = np.array([1,2,3,4,5,6,7,8,9,10], dtype=float)# Your Code Here#
ys = np.array([100,150,200,250,300,350,400,450,500,550], dtype=float)# Your Code Here#
model.fit(xs,ys,epochs = 1000)
print(model.predict([7.0]))
还有一点需要注意:当我使用第二组代码训练我的模型时,模型可能偶尔训练有素(大约10次中有8次没有训练有素,并且在1000个时期之后损失仍然> 10000)。