ques_emb_linear = tf.nn.embedding_lookup(var_dict['rnnqW'], question[:, i - 1]) #ques_emb_linear = tf.gather(var_dict['rnnqW'], question[:,i-1]) ques_emb_drop = tf.nn.dropout(ques_emb_linear, 1 - drop_out_rate) ques_emb = tf.tanh(ques_emb_drop) output, state = stacked_lstm(ques_emb, state) print(state.get_shape()) features = combine_embeddings(image, state, var_dict) #features = tf.concat([image,state], 1) #features = tf.concat([state,image], 1) features2 = tf.concat([features, noise], 1) scores_emb = generator_me(features2, var_dict) #v1 = tf.Variable(tf.truncated_normal([2048,1000])) #v2 = tf.Variable(tf.constant(0.1, shape=[1000])) #scores_emb = tf.nn.relu_layer(state, v1, v2) loss = tf.reduce_mean( tf.nn.softmax_cross_entropy_with_logits(logits=scores_emb, labels=answers_true)) tvars = tf.trainable_variables() opt = tf.train.AdamOptimizer(learning_rate=1e-4) # gradient clipping gvs = opt.compute_gradients(loss, tvars) for i in range(len(tvars)): print(tvars[i].name)
rnn_mean, rnn_var = tf.nn.moments(rnn_out_true, [0]) rnn_out_true_n = tf.nn.batch_normalization(rnn_out_true, rnn_mean, rnn_var, var_dict['rnnoutbeta'], var_dict['rnnoutscale'], epsilon) # combine features from image and question features_true = combine_embeddings(cnn_out_true_n, rnn_out_true_n, var_dict) #features = tf.add(features_true, noise) features = features_true #feat_mean, feat_var = tf.nn.moments(features_true, [0]) #features_true_n = tf.nn.batch_normalization(features_true,feat_mean,feat_var,var_dict['featbeta'], # var_dict['featscale'],epsilon) # load generator network g_true = generator_me(features, var_dict) loss = tf.reduce_mean( tf.nn.softmax_cross_entropy_with_logits(logits=g_true, labels=answers_true)) update_ops = tf.get_collection(tf.GraphKeys.UPDATE_OPS) with tf.control_dependencies(update_ops): train_step = tf.train.AdamOptimizer(1e-4).minimize(loss) # init variables sess.run(tf.global_variables_initializer()) print('loading data...\n\n') qa_data = load_data() print('done loading data...\n\n')