# define optimizer operation to minimize the loss optimizer = tf.train.AdamOptimizer(learning_rate=0.001) train_step = optimizer.minimize(decoder.loss) # will be used to save/load network weights. # you need to reset your default graph and define it in the same way to be able to load the saved weights! saver = tf.train.Saver() # intialize all variables s.run(tf.global_variables_initializer()) ## GRADED PART, DO NOT CHANGE! # Decoder shapes test grader.set_answer( "rbpnH", grading_utils.test_decoder_shapes(decoder, IMG_EMBED_SIZE, vocab, s)) # Decoder random loss test grader.set_answer( "E2OIL", grading_utils.test_random_decoder_loss(decoder, IMG_EMBED_SIZE, vocab, s)) # you can make submission with answers so far to check yourself at this stage grader.submit(COURSERA_EMAIL, COURSERA_TOKEN) """## Training loop Evaluate train and validation metrics through training and log them. Ensure that loss decreases. """ train_captions_indexed = np.array(train_captions_indexed) val_captions_indexed = np.array(val_captions_indexed)
loss = tf.reduce_sum(tf.multiply(xent, flat_loss_mask)) / tf.reduce_sum(flat_loss_mask) # define optimizer operation to minimize the loss optimizer = tf.train.AdamOptimizer(learning_rate=0.001) train_step = optimizer.minimize(decoder.loss) # will be used to save/load network weights. # you need to reset your default graph and define it in the same way to be able to load the saved weights! saver = tf.train.Saver() # intialize all variables s.run(tf.global_variables_initializer()) ## GRADED PART, DO NOT CHANGE! # Decoder shapes test grader.set_answer("rbpnH", grading_utils.test_decoder_shapes(decoder, IMG_EMBED_SIZE, vocab, s)) # Decoder random loss test grader.set_answer("E2OIL", grading_utils.test_random_decoder_loss(decoder, IMG_EMBED_SIZE, vocab, s)) # you can make submission with answers so far to check yourself at this stage grader.submit(COURSERA_EMAIL, COURSERA_TOKEN) """## Training loop Evaluate train and validation metrics through training and log them. Ensure that loss decreases. """ train_captions_indexed = np.array(train_captions_indexed) val_captions_indexed = np.array(val_captions_indexed) # generate batch via random sampling of images and captions for them, # we use `max_len` parameter to control the length of the captions (truncating long captions)