用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 个纪元。这可能是导致您出现问题的原因。
大家好!
我是机器学习的新手,我决定从拟合 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 个纪元。这可能是导致您出现问题的原因。