neural-network - 用 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)
在这一点上,我尝试调整架构,尝试不同的损失函数、优化器和批量大小。但是,我的损失函数似乎并没有改善。它遵循一个良好的趋势,但它陷入了相当高的价值。
你会怎么做才能接近零?谢谢!
解决方案
你绝对应该使用超过 30 个 epoch。我推荐大约 300-600 个 epoch。这可能是导致您的问题的原因。
推荐阅读
- jenkins - 如何调试 NUnit 仅在 CI 构建中失败?
- rest - 创建最佳 API:上传 N 个文件和 json 元数据
- xml - SoapUI:在 API 响应中查找属性值并将关联值设置为另一个属性
- node.js - 如何将值从 HTML 选项传递到 MongoDB
- c++ - 是否有任何简单的方法可以将“02:00”转换为分钟,比如 120?
- javascript - 任何人都可以解释以下 JavaScript 代码的独特价值吗?它是如何在内部相互比较的
- leaflet - 编辑要素时无法拖动手柄
- mysql - 尝试在 Bitnami 的 WordPress 多层堆栈中导入/导出 MariaDB 数据库时出现 2002 代码错误
- java - 如何知道用户是否截屏?
- selenium - 机器人框架硒获取列表中的所有名称