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

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

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

  1. xs = np.array([1, 2, 3, 4, 5])
  2. ys = np.array([3, 7, 11, 15, 19])
  3. model = tf.keras.Sequential([keras.layers.Dense(1, input_shape=(1,))])
  4. model.compile(optimizer='adam', loss='mse', metrics=['mae'])
  5. model.fit(xs, ys, epochs=200)
  6. result = model.predict(xs)
  7. print(result)

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

  1. Epoch 200/200
  2. 1/1 [==============================] - 0s 6ms/step - loss: 161.2350 - mae: 11.2588
  3. 1/1 [==============================] - 0s 98ms/step
  4. [[ 0.04653116]
  5. [-0.1042112 ]
  6. [-0.25495356]
  7. [-0.40569592]
  8. [-0.55643827]]
hfyxw5xn

hfyxw5xn1#

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

  1. model = tf.keras.Sequential()
  2. model.add(keras.layers.Dense(16, input_shape=(1,)))
  3. model.add(keras.layers.Dropout(0.1))
  4. model.add(keras.layers.Dense(16))
  5. model.add(keras.layers.Dropout(0.1))
  6. model.add(keras.layers.Dense(1))
  7. model.compile(optimizer='adam', loss='mse', metrics=['mae'])
  8. model.summary()
  9. model.fit(xs, ys, epochs=200, verbose = 0)
  10. result = model.predict(xs)
  11. print(np.floor(result))

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

展开查看全部

相关问题