我创建了一个非常简单的 TensorFlow 模型,如果我有一组训练数据,它就可以工作。但是,如果我再添加一个训练示例,那么损失就会变为无穷大,模型就无法工作了。尽管这两个示例的模型是相同的。唯一的区别是增加了一个训练示例。
我想制作一个大型训练集,但如果训练集太大,损失会发散,这似乎是不可能的。在有额外训练示例的情况下,预测也完全错误。在少一个示例的情况下,预测是正确的。在下面的代码中,模型有 20 个训练示例,损失趋于无穷大。模型 2 有 19 个训练示例,损失函数趋于(接近)零。
<pre>
import tensorflow as tf
import numpy as np
from tensorflow import keras
print(tf.__version__)``
def hw_function(x):
y = (2. * x) - 1.
return y
# Build a simple Sequential model
model = tf.keras.Sequential([
tf.keras.Input(shape=(1,)),
tf.keras.layers.Dense(units=1)])
# Compile the model
model.compile(optimizer='sgd', loss='mean_squared_error')
# Declare model inputs and outputs for training
xs=[x for x in range(-1, 19, 1)]
ys=[x for x in range(-3, 36, 2)]
xs=np.array(xs, dtype=float)
ys=np.array(ys, dtype=float)
# Train the model
model.fit(xs, ys, verbose=1, epochs=500)
# Make a prediction
p = np.array([100.0, 900.0], dtype=float)
print(model.predict(p))
# Build exactly the same model but have one more training example
model2 = tf.keras.Sequential([
tf.keras.Input(shape=(1,)),
tf.keras.layers.Dense(units=1)])
model2.compile(optimizer='sgd', loss='mean_squared_error')
xs2=[x for x in range(-1, 18, 1)]
ys2=[x for x in range(-3, 34, 2)]
xs2=np.array(xs2, dtype=float)
ys2=np.array(ys2, dtype=float)
# Train the model
model2.fit(xs2, ys2, verbose=1, epochs=500)
p = np.array([100.0, 900.0], dtype=float)
print(model2.predict(p))
<code>