【问题标题】:tensorflow autoencoder is not learning in trainingtensorflow 自动编码器没有在训练中学习
【发布时间】:2017-06-27 02:36:55
【问题描述】:

我正在尝试使用非常接近给定原始数据的 tensorflow 自动编码器生成合成数据。但是,自动编码器不在训练阶段学习。我的成本函数一般不会减少,合成数据与原始数据无关。我的代码如下:

x = tf.placeholder("float", [None, COLUMN])
# Weights and biases to hidden layer
Wh = tf.Variable(tf.random_uniform((COLUMN, UNITS_OF_HIDDEN_LAYER), -1.0 / mpmath.sqrt(COLUMN), 1.0 / mpmath.sqrt(COLUMN)))
bh = tf.Variable(tf.zeros([UNITS_OF_HIDDEN_LAYER]))
h = tf.nn.sigmoid(tf.matmul(x, Wh) + bh)
# Weights and biases to output layer
Wo = tf.transpose(Wh) # tied weights
bo = tf.Variable(tf.zeros([COLUMN]))
y = tf.nn.sigmoid(tf.matmul(h, Wo) + bo)

# Objective functions
cross_entropy = tf.reduce_mean(tf.pow(x - y, 2))
optimizer = tf.train.RMSPropOptimizer(LEARNING_RATE).minimize(cross_entropy)
init = tf.global_variables_initializer()
sess = tf.Session()
sess.run(init)

train_number, _ = x_train.shape


for j in range(TRAINING_EPOCHS):
    sample = np.random.randint(train_number, size=BATCH_SIZE)
    batch_xs = x_train[sample][:]
    _, cost = sess.run([optimizer, cross_entropy], feed_dict={x: batch_xs})
    print("COST: ", cost)

encodedTensor = tf.nn.sigmoid(tf.add(tf.matmul(x_train, Wh), bh))
encodedData = sess.run(encodedTensor)

decodedTensor = tf.nn.sigmoid(tf.add(tf.matmul(encodedData, Wo), bo))
decodedData = sess.run(decodedTensor)
return decodedData

【问题讨论】:

    标签: tensorflow autoencoder


    【解决方案1】:

    你有没有尝试过不同的权重初始化,比如

    Wh = tf.Variable(tf.random_normal([n_inputs,n_hiddens1],0,0.1),name='W1')
    bh = tf.Variable(tf.random_normal([n_hiddens1],0,0.1),name='b1')
    

    这适用于我的代码,可能还有更多

     Wo = tf.transpose(Wh) # tied weight
    

    这不是一个好主意,因为在梯度下降中,张量流可能会将它们视为相同的变量或因变量,并在每次优化迭代时修改它们

    无论如何,如果你使用 tensorboard,你会看到这两个错误选项之一是否为真

    【讨论】:

      【解决方案2】:

      您的损失函数是 MSE。如果您切换到自动编码器的交叉熵损失会更好。在这里您可以找到有关它的详细信息link

      【讨论】:

      • 您能解释一下原因吗?我认为自动编码器做回归,而不是分类
      • 自动编码器可用于回归和分类
      猜你喜欢
      • 1970-01-01
      • 2017-09-03
      • 2019-12-24
      • 2021-01-14
      • 2021-10-06
      • 2018-02-08
      • 2016-01-12
      • 2022-11-28
      • 2018-07-10
      相关资源
      最近更新 更多