예제 #1
0
            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)
예제 #2
0
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')