用keras拟合表面

Fitting a surface with keras

大家好!

我是机器学习的新手,我决定从拟合 3D 函数开始 z= -x^2 + y^2。 首先,我创建了一个网格并评估了每个点的函数:

dataset=[(x,y,-x**2+y**2) for x  in range(-50,50) for y in range(-50,50)]
coord=dataset[:,0:2] 
z=dataset[:,2:]

模型架构:

opt= tf.keras.optimizers.Adam(learning_rate=0.01)
model = tf.keras.models.Sequential([
  Dense(256, activation='relu',input_dim=2), 
  Dense(128, activation='relu'),
  Dense(64, activation='relu'),   
  Dense(10,activation='relu'), 
  Dense(1)
])
model.compile(loss='mae', optimizer=opt)
history=model.fit(coord, z, epochs=30,batch_size=15, verbose=1)

此时我尝试调整架构,尝试了不同的损失函数、优化器和批量大小。 但是我的损失函数似乎并没有改善。它遵循一个良好的趋势,但它停留在相当高的值。

The loss plot

你会怎么做才能更接近于零? 谢谢!

你绝对应该使用 30 个以上的 epoch。我推荐大约 300-600 个纪元。这可能是导致您出现问题的原因。