keras 如何用tf模型从数列中预测下一个数?

vddsk6oq  于 2022-11-13  发布在  其他
关注(0)|答案(1)|浏览(154)

试图预测下一个数字,但效果不佳。
我有一个500个号码的列表:[...,x,x,3,2,1,7,2,0,3],我想用这500个数字建立预测模型,给予可能的501个数字。
我试着用这段代码做一个模型例子,它没有像预期的那样去做1到5个数字的例子。

xs = np.array([1, 2, 3, 4, 5])
ys = np.array([3, 7, 11, 15, 19])

model = tf.keras.Sequential([keras.layers.Dense(1, input_shape=(1,))])
model.compile(optimizer='adam', loss='mse', metrics=['mae'])
model.fit(xs, ys, epochs=200)
result = model.predict(xs)

print(result)

我使用了预期下一个x数预测代码。它给出了下一个数字,而不是6:

Epoch 200/200
1/1 [==============================] - 0s 6ms/step - loss: 161.2350 - mae: 11.2588
1/1 [==============================] - 0s 98ms/step
[[ 0.04653116]
 [-0.1042112 ]
 [-0.25495356]
 [-0.40569592]
 [-0.55643827]]
hfyxw5xn

hfyxw5xn1#

要解决这类问题,你的模型应该更加复杂。输入值和目标值之间的关系不是线性的(根据示例),所以当前的模型看起来像 input_value x weight + bias,几乎不能找到一个好的解决方案。
我建议您使用类似于以下内容的内容:

model = tf.keras.Sequential()
model.add(keras.layers.Dense(16, input_shape=(1,)))
model.add(keras.layers.Dropout(0.1))
model.add(keras.layers.Dense(16))
model.add(keras.layers.Dropout(0.1))
model.add(keras.layers.Dense(1))
model.compile(optimizer='adam', loss='mse', metrics=['mae'])
model.summary()

model.fit(xs, ys, epochs=200, verbose = 0)
result = model.predict(xs)

print(np.floor(result))

为了改善结果,您还可以使用超参数

相关问题