У меня очень простая модель, в которой я пытаюсь предсказать значение выражения 2x - 2
Она работает хорошо, но вот мой вопрос.
Пока что я обучал ее на основе всего 20 значений (от -10 до 10), и он отлично работает. Я не понимаю, что когда я тренирую его на большем количестве значений, скажем, (-10 to 25)
, мой прогноз возвращает [[nan]]
. Даже веса модели равны [<tf.Variable 'dense/kernel:0' shape=(1, 1) dtype=float32, numpy=array([[nan]], dtype=float32)>, <tf.Variable 'dense/bias:0' shape=(1,) dtype=float32, numpy=array([nan], dtype=float32)>]
Почему добавление дополнительных обучающих данных приводит к nan?
import tensorflow as tf
import numpy as np
from tensorflow import keras
def gen_vals(x):
return x*2 - 2
model = tf.keras.Sequential([
keras.layers.InputLayer(input_shape=(1,)),
keras.layers.Dense(units=1)
])
model.compile(optimizer='sgd', loss='mean_squared_error', metrics=['accuracy'])
xs = []
ys = []
for x in range(-10, 10):
xs.append(x)
ys.append(gen_vals(x))
xs = np.array(xs, dtype=float)
ys = np.array(ys, dtype=float)
model.fit(xs, ys, epochs=500)
print(model.predict([20]))