这是我第一次尝试将机器学习与Keras. 与其他人相比,我需要使用此类算法的缺点之一。
我需要一个函数,它接受一个对象angle并distance输出一个new angle和power(例如,想象用弓瞄准一个物体,算法告诉我我的手臂应该走多远以及弓的力量)。这种配置没有任何预测性。4D (input,output)我将针对每种可能的情况生成大量数据。我希望人工智能“评估”一些输入并返回该组输入的相应输出,换句话说,记住数据并输出相同的数字。
我需要一个 AI 来完成这项任务,因为我需要它从未见过的输入值之间的平滑值(有限插值)
我使用了两个模型:
model = Sequential()
model.add(Dense(12, input_dim=2, activation='relu'))
model.add(Dense(24, activation='relu'))
model.add(Dense(24, activation='relu'))
model.add(Dense(24, activation='sigmoid'))
model.add(Dense(2, activation='linear'))
现在我知道这是不正确的,因为Sigmoid它用于二进制分类。尽管如此,它仍然有效!我最终得到了mse4 分。我没有管理具有相同#时期all-ReLu的层获得相同的损失。
model = Sequential()
model.add(Dense(12, input_dim=2, activation='relu'))
model.add(Dense(24, activation='linear'))
model.add(LeakyReLU(alpha=0.1))
model.add(Dense(24, activation='linear'))
model.add(LeakyReLU(alpha=0.1))
model.add(Dense(2, activation='linear'))
这个模型有loss of 5.43500 个 epochs 并且似乎在这里稳定下来。
笔记:
- 我不得不重新训练模型,因为我生成训练数据的速度非常快。我需要继续使用一个能够继续减少损失的模型。
- 规范化比我见过的任何事情都要糟糕。
- 因为我的模型应该对不同的非常接近的输入敏感,所以我使用从 5 到 2 的批处理值进行测试。
- 我的数据集目前是 1100 行
- 这个模型将根据我提供的数据进行非常密切的训练。我输入多少行并不重要,因为我不想要预测或概括。我希望 AI 输出它所看到的相应输入集。这意味着将 AI 过度拟合到最大值,直到它达到非常低的损失。然后我可以测试它的训练值。
我应该继续使用第一个模型吗?Sigmoid使用图层有意义吗?第二个模型如何改进?
我的数据样本:
theta[-90,90], distance [0,40], theta_output[-90,90] power[0,1,2]
0.0,8.696802,0.25688815116882324,1
-1.990075945854187,5.455038,11.56562614440918,1
-56.81309127807617,3.1364963,-53.07550048828125,1
-38.21211242675781,4.718147,-32.30286407470703,1
-33.828956604003906,5.163292,-35.61191940307617,0
-27.64937973022461,6.182574,-25.107540130615234,1
2.8613548278808594,13.922726,-2.3708770275115967,2
-8.812483787536621,14.951225,-3.919188976287842,2
0.0,21.448895,-3.9320743083953857,2