Commit 86d557a6 authored by Rudolf Chrispens's avatar Rudolf Chrispens
Browse files

reworked first part add config for verbose output

parent bd38aed1
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -11,6 +11,7 @@
# =========================================================================================

from __future__ import division
from lstm.configuration import current as _config

import tensorflow as tf

@@ -57,6 +58,7 @@ class coco_model(object):
        self.features = tf.placeholder(tf.float32, [None, self.D], name="features_placeholder_model")
        self.captions = tf.placeholder(tf.int32, [None, self.L], name="captions_placeholder_model")

        if _config.trainer.verbose:
            print("\n#>\t CREATE MODEL")
            print("#>\tdim_feature:", dim_feature)
            print("#>\tdim_embed", dim_embed)
@@ -86,6 +88,7 @@ class coco_model(object):
            b_c = tf.get_variable('b_c', [self.H], initializer=self.const_initializer)
            c = tf.nn.tanh(tf.matmul(features_mean, w_c) + b_c)

            if _config.trainer.verbose:
                print("\n#>\t Initial LSTM")
                print("#>\t:", features_mean[0])
                print("#>\tc:", c)
@@ -97,6 +100,7 @@ class coco_model(object):
        with tf.variable_scope('word_embedding', reuse=reuse):
            w = tf.get_variable('w', [self.V, self.M], initializer=self.emb_initializer)
            x = tf.nn.embedding_lookup(w, inputs, name='word_vector')  # (N, T, M) or (N, M)
            if _config.trainer.verbose:
                print("\n#>\t Embedding Loopkup")
                print("#>\tV:", self.V)
                print("#>\tM:", self.M)
@@ -188,6 +192,7 @@ class coco_model(object):
        alpha_list = []
        lstm_cell = tf.nn.rnn_cell.BasicLSTMCell(num_units=self.H)

        if _config.trainer.verbose:
            print("\n#>\t Build Model")
            print("#>\tmask:", mask)
            print("#>\tbatch_normalisation:", self._batch_norm)
+6 −3
Original line number Diff line number Diff line
@@ -60,6 +60,7 @@ class coco_trainer(object):
        if not os.path.exists(self.log_path):
            os.makedirs(self.log_path)

        if _config.trainer.verbose:
            print("\n#>\t INIT TRAINING")
            print("#>\ttf.Optimizer", self.optimizer)
            print("#>\tlearningrate", self.learning_rate)
@@ -85,6 +86,7 @@ class coco_trainer(object):
            loss = self.model.build_model()
            tf.get_variable_scope().reuse_variables()
            _, _, generated_captions = self.model.build_sampler(max_len=20)
            if _config.trainer.verbose:
                print("\n#>\t INIT LOSS")
                print("#>\tloss", loss)

@@ -95,6 +97,7 @@ class coco_trainer(object):
            grads = tf.gradients(loss, tf.trainable_variables())
            grads_and_vars = list(zip(grads, tf.trainable_variables()))
            train_op = optimizer.apply_gradients(grads_and_vars=grads_and_vars)
            if _config.trainer.verbose:
                print("\n#>\t TRAIN Operation")
                print("#>\toptimizer\n", optimizer)
            # print("#>\tgradients\n", grads)
@@ -114,7 +117,7 @@ class coco_trainer(object):
        #summary_op = tf.merge_all_summaries()
        summary_op = tf.summary.merge_all()

        print("\n#>\t TRAINING")
        print("\n#> TRAINING")
        print("#>\tTotal number of epochs: %d" %self.n_epochs)
        print("#>\tData size: %d" %n_examples)
        print("#>\tBatch size: %d" %self.batch_size)
@@ -141,7 +144,7 @@ class coco_trainer(object):
            print("#>\tcaption shape:", captions.shape)
            print("#>\timageId shape:", image_idxs.shape)
            for e in range(self.n_epochs):
                print("#>\tEPOCH")
                print("#> EPOCH")

                rand_idxs = np.random.permutation(n_examples)
                m_captions = captions[rand_idxs]
@@ -154,7 +157,7 @@ class coco_trainer(object):
                    image_idxs_batch = m_image_idxs[i*self.batch_size:(i+1)*self.batch_size]
                    features_batch = m_features[i*self.batch_size:(i+1)*self.batch_size]
                    if i % 10 == 0:
                        print("#> Batch Shapes")
                        print()
                        print("#>\tBatch: " + str(i) + "\tEpoch: " + str(e) + "\tBatch size: " + str(i*self.batch_size) + " - " + str((i+1)*self.batch_size))
                        print("#>\tfrom Feature Batch:", features_batch.shape, features_batch[0].shape)
                        print("#>\tfrom Captions Batch:", captions_batch.shape)
+3 −2
Original line number Diff line number Diff line
@@ -45,6 +45,7 @@ class default_trainer(object):
    num_layers = 2
    num_epochs = 60
    num_steps = 35
    vector_size = 2048
    batch_size = 20
    dropout = 0.5
    init_scale = 0.05
@@ -84,10 +85,10 @@ class current(default_reader, default_validator, default_trainer, default_paths)
    # e.g. validator.read_test = "/test1234"

    reader.reader_on = False
    reader.verbose = True
    reader.verbose = False

    validator.validator_on = False

    trainer.train_on = True
    trainer.verbose = True
    trainer.verbose = False
    trainer.num_epochs = 3
+3 −3
Original line number Diff line number Diff line
@@ -40,8 +40,8 @@ def main(self, parameter_list):

    model = _model.coco_model(  word_to_idx,
                                current_reader,
                                dim_feature=[20, 2048],
                                dim_embed=2048,
                                dim_feature=[_config.trainer.batch_size, _config.trainer.vector_size],
                                dim_embed=_config.trainer.vector_size,
                                dim_hidden=1024,
                                n_time_step=16,
                                prev2out=True,
@@ -55,7 +55,7 @@ def main(self, parameter_list):
                                    train_data,
                                    val_data,
                                    n_epochs=3,
                                    batch_size=20,
                                    batch_size=_config.trainer.batch_size,
                                    update_rule='adam',
                                    learning_rate=0.001,
                                    print_every=10,