首页 > 解决方案 > 用 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)

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

损失图

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

标签: neural-networkloss-functiondata-fitting

解决方案


你绝对应该使用超过 30 个 epoch。我推荐大约 300-600 个 epoch。这可能是导致您的问题的原因。


推荐阅读