【发布时间】:2018-11-06 00:12:16
【问题描述】:
我使用 openai gym 的 Acrobot-v1 来制作我的模型 观察状态大小为 6,动作为 -1 或 1 或 0。 我想检查我的模型是否能够学习。
所以,我使用了交叉验证方法,我的集合分为 64000 个状态-动作对的训练集和 16000 个状态-动作对的验证集。
但是,每当我增加隐藏层中的神经元数量时,验证损失就会在训练过程中不断减少。 我已经了解到许多参数会导致过度拟合,并且可以通过观察验证损失的增加来检测过度拟合。 我不知道该怎么办。
self.DEncoder = tf.keras.models.Sequential([
tf.keras.layers.Flatten(),
tf.keras.layers.Dense(self.nInHidden),
tf.keras.layers.BatchNormalization(),
tf.keras.layers.LeakyReLU(),
tf.keras.layers.Dense(self.nInHidden),
tf.keras.layers.BatchNormalization(),
tf.keras.layers.LeakyReLU(),
tf.keras.layers.Dense(self.nInHidden),
tf.keras.layers.BatchNormalization(),
tf.keras.layers.LeakyReLU(),
tf.keras.layers.Dense(self.nInHidden),
tf.keras.layers.BatchNormalization(),
tf.keras.layers.LeakyReLU(),
tf.keras.layers.Dense(self.nfeature),
tf.keras.layers.BatchNormalization(),
tf.keras.layers.LeakyReLU()
])
self.DDecoder = tf.keras.models.Sequential([
tf.keras.layers.Dense(self.nInHidden),
tf.keras.layers.BatchNormalization(),
tf.keras.layers.LeakyReLU(),
tf.keras.layers.Dense(self.nInHidden),
tf.keras.layers.BatchNormalization(),
tf.keras.layers.LeakyReLU(),
tf.keras.layers.Dense(self.nInHidden),
tf.keras.layers.BatchNormalization(),
tf.keras.layers.LeakyReLU(),
tf.keras.layers.Dense(self.nInHidden),
tf.keras.layers.BatchNormalization(),
tf.keras.layers.LeakyReLU(),
tf.keras.layers.Dense(self.nState*self.npred),
tf.keras.layers.Reshape((self.npred,self.nState,1))
])
这是我的模型。我使用了 l2 损失(mse,均方误差)。
【问题讨论】:
-
我要冒昧地猜测你的验证集是你的训练集的一个子集。
标签: python machine-learning keras