[英]Autoencoder loss is not decreasing (and starts very high)
我有以下功能,应该自动编码我的数据。
我的数据可以被认为是长度为100,宽度为2的图像,它有2个通道(100,2,2)
def construct_ae(input_shape):
encoder_input = tf.placeholder(tf.float32, input_shape, name='x')
with tf.variable_scope("encoder"):
flattened = tf.layers.flatten(encoder_input)
e_fc_1 = tf.layers.dense(flattened, units=150, activation=tf.nn.relu)
encoded = tf.layers.dense(e_fc_1, units=75, activation=None)
with tf.variable_scope("decoder"):
d_fc_1 = tf.layers.dense(encoded, 150, activation=tf.nn.relu)
d_fc_2 = tf.layers.dense(d_fc_1, 400, activation=None)
decoded = tf.reshape(d_fc_2, input_shape)
with tf.variable_scope('training'):
loss = tf.losses.mean_squared_error(labels=encoder_input, predictions=decoded)
cost = tf.reduce_mean(loss)
optimizer = tf.train.AdamOptimizer(learning_rate=0.001).minimize(cost)
return optimizer
我遇到了我的成本大约为1.1e9的问题,而且它并没有随着时间的推移而减少
我想象了渐变(删除了代码因为它会让事情变得杂乱)而且我觉得那里出了什么问题? 但我不确定
问题
1)网络结构中的任何内容看起来都不正确吗?
2)数据是否需要在0-1之间归一化?
3)当我尝试将学习率提高到1时,我有时会遇到NaNs。这是什么意思?
4)我想我应该使用CNN,但我遇到了同样的问题所以我想我会转移到FC,因为它可能更容易调试。
5)我想我正在使用错误的丢失功能,但我真的找不到任何关于正确使用损失的文件。 如果有人能指导我,我会非常感激
就高启动误差而言; 这一切都取决于你的参数的初始化。 一个好的初始化技术可以让你启动与期望的最小值相差太远的错误。 但是,默认的随机或基于零的初始化几乎总是会导致这种情况。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.