【发布时间】:2021-02-03 03:47:04
【问题描述】:
这可能是有史以来最简单的模型,我写这个是为了在几天后参加的网络研讨会上演示
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')
num = []
sqr = []
for i in range(20):
num.append(i)
sqr.append(i*i)
print(num[i], sqr[i])
def model():
xs = np.array(num, dtype=float)
ys = np.array(sqr, dtype=float)
global model
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=500)
model()
print(model.predict([10]))
如您所见,预测数字的平方只是一个 NN。但这会给出inf,然后是nan 作为损失
1/1 [==============================] - 0s 2ms/step - loss: nan
Epoch 499/500
1/1 [==============================] - 0s 5ms/step - loss: nan
Epoch 500/500
1/1 [==============================] - 0s 1ms/step - loss: nan
预测给出[[nan]]
如果我将 20 减少到 7 或 8,它会起作用。但随后因上述任何事情而失败。
我认为这与学习率有关,但我可能是错的......请告诉我这是如何工作的以及解决方案。
【问题讨论】:
标签: python numpy tensorflow machine-learning keras