python 丢失被卡住,无法在TensorFlow中获得我想要的内容

juzqafwq  于 2022-12-21  发布在  Python
关注(0)|答案(1)|浏览(102)
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

我试着改变纪元或添加更多的层,但它没有工作。我在网上搜索了很长一段时间,但没有使用。请帮助或尝试给予一些想法如何实现这一点。

igetnqfo

igetnqfo1#

您可以尝试以下几项操作来提高模型的性能:
1.您可能需要考虑对输入数据a和B进行归一化。这有助于优化过程更快收敛,并可能获得更好的结果。为此,您可以从每个元素中减去a和b的平均值,然后除以它们的标准差。
1.您可能希望尝试使用其他优化器。Adam优化器在许多情况下是一个不错的选择,但也有其他优化器可能更适合您的特定问题。您可以尝试使用其他优化器,方法是向compile方法的优化器参数传递不同的字符串。
1.您可能希望尝试使用其他损失函数。均方误差损失通常用于回归问题,但对于您的特定问题,还有其他损失函数可能效果更好。您可以尝试使用其他损失函数,方法是向compile方法的损失参数传递其他字符串。
1.您可能希望尝试使用不同数量的层或每个层的不同数量的单元。增加模型的复杂性可能有助于它更好地捕捉数据中的二次关系,但如果不小心,也可能导致过拟合。
我希望这些建议对你有帮助!如果你仍然有麻烦,请告诉我,我很乐意提供进一步的帮助。

相关问题