In tensorflow 1, when the loss function is defined with operations on Tensors, is the model really trained?

Viewed 13

First, I m sorry but it's not possible to reproduce this problem on a few lines, as the model involved is a very complex network.

But here is an idea of the code:

def return_iterator(data, nb_epochs, batch_size):

    dataset = tf.data.Dataset.from_tensor_slices(data)
    dataset = dataset.repeat(nb_epochs).batch(batch_size)
    iterator = dataset.make_one_shot_iterator()
    yy = iterator.get_next()
    return  tf.cast(yy, tf.float32)

with tf.Session(config=tf.ConfigProto(allow_soft_placement=True)) as sess:

    y_pred = complex_model.autoencode(train)
    y_pred = tf.convert_to_tensor(y_pred, dtype=tf.float32)

    nb_epochs = 10
    batch_size = 64
    y_real = return_iterator(train, nb_epochs, batch_size)
    y_pred = return_iterator(y_pred, nb_epochs, batch_size)


    res_equal = 1. - tf.reduce_mean(tf.abs(y_pred - y_real), [1,2,3])
    loss = 1 - tf.reduce_sum(res_equal, axis=0)

    opt = tf.train.AdamOptimizer().minimize(loss)


    tf.global_variables_initializer().run()

    for epoch in range(0, nb_epochs):

        _, d_loss = sess.run([opt, loss])
     

To define the loss, I must use operations like tf.reduce_mean and tf.reduce_sum , and these operations only accept Tensors as input.

My question is: with this code, will the complex_model autoencoder be trained during the training ? (eventhough here, it's just used to output the predictions to compute the loss)

Thank you

p.s: I am using TF1.15 (and I cannot use another version)

0 Answers
Related