import numpy as np
import tensorflow as tf
from tensorflow import keras
a = tf.range(1, 100, dtype = float)
r = tf.random.uniform(shape = a.shape) / 10
b = tf.square(a) + r
def create_model(x, y):
opt = "adam"
ls = "mean_squared_error"
model = tf.keras.Sequential([tf.keras.layers.Dense(units = 2, input_shape = [1], activation = "relu"),
tf.keras.layers.Dense(units = 3),
tf.keras.layers.Dense(units = 2),
tf.keras.layers.Dense(units = 1)])
model.compile(optimizer = opt,
loss = ls)
model.fit(x, y, epochs = 1000, verbose = 2)
model = create_model(a, b)
我是TensorFlow的初学者。我想预测二次函数,所以我写了一个如上所述的模型。但是损失总是卡住,不能得到正确的输出。1000个历元后,我得到了这个结果。
Epoch 1000/1000
4/4 - 0s - loss: 1161095.8750
我试着改变纪元或添加更多的层,但它没有工作。我在网上搜索了很长一段时间,但没有使用。请帮助或尝试给予一些想法如何实现这一点。
1条答案
按热度按时间igetnqfo1#
您可以尝试以下几项操作来提高模型的性能:
1.您可能需要考虑对输入数据a和B进行归一化。这有助于优化过程更快收敛,并可能获得更好的结果。为此,您可以从每个元素中减去a和b的平均值,然后除以它们的标准差。
1.您可能希望尝试使用其他优化器。Adam优化器在许多情况下是一个不错的选择,但也有其他优化器可能更适合您的特定问题。您可以尝试使用其他优化器,方法是向compile方法的优化器参数传递不同的字符串。
1.您可能希望尝试使用其他损失函数。均方误差损失通常用于回归问题,但对于您的特定问题,还有其他损失函数可能效果更好。您可以尝试使用其他损失函数,方法是向compile方法的损失参数传递其他字符串。
1.您可能希望尝试使用不同数量的层或每个层的不同数量的单元。增加模型的复杂性可能有助于它更好地捕捉数据中的二次关系,但如果不小心,也可能导致过拟合。
我希望这些建议对你有帮助!如果你仍然有麻烦,请告诉我,我很乐意提供进一步的帮助。