chatbot-retrieval
chatbot-retrieval copied to clipboard
Monitors are deprecated. Please use tf.train.SessionRunHook.
while I run the udc_train.py on tensorflow 1.1.0, it raise the error like that:
WARNING:tensorflow:From C:\Anaconda3\lib\site-packages\tensorflow\contrib\learn\python\learn\monitors.py:267: BaseMonitor.init (from tensorflow.contrib.learn.python.learn.monitors) is deprecated and will be removed after 2016-12-05.
Instructions for updating:
Monitors are deprecated. Please use tf.train.SessionRunHook.
Traceback (most recent call last):
File "E:/project/chatbot/udc_train.py", line 67, in
could you give me some advice, thank you
The order of arguments for tf.concat and tf.split have changed in TF > 0.12. So, the actual error is in line 47 dual_encoder_model.. Replace these lines below ( # commented) and corrected below. This should help.. Also, you may have to replace tf.batch_matmul with tf.matmul and losses = tf.nn.sigmoid_cross_entropy_with_logits(logits=logits, labels=tf.to_float(targets))
rnn_outputs, rnn_states = tf.nn.dynamic_rnn( cell, #tf.concat(0, [context_embedded, utterance_embedded]), tf.concat( [context_embedded, utterance_embedded], 0), #sequence_length=tf.concat(0, [context_len, utterance_len]), sequence_length=tf.concat([context_len, utterance_len], 0), dtype=tf.float32) #encoding_context, encoding_utterance = tf.split(0, 2, rnn_states.h) encoding_context, encoding_utterance = tf.split(rnn_states.h, 2 , 0)
Fixing tf.concat does not fix this problem.
No, it fixes the problem in the trace above at line 47 in dual_encoder.py, which is due to a change in the order of arguments for tf.concat and tf.split in versions of TF > 0.12
There is a disconnect between the title of this issue and the actual stack trace.
The solution for Monitors being deprecated is to use tf.train.SessionRunHook. It's in the title itself.
How do you use tf.train.SessionRunHook ? for instance I have : hooks = [tf.train.LoggingTensorHook({'loss'}, every_n_iter = 4)]
learn.Experiment(estimator = estimator, train_input_fn = get_train_inputs, eval_input_fn = get_eval_inputs, train_monitors = hooks, eval_hooks = hooks)
It says: Monitors are deprecated. Please use tf.train.SessionRunHook., but I don't know how to change it.
I have same problem as @nikky78
You don't really have to @nikky78 , @logust79 . All you gotta do is change the order of concat and split parameters as mentioned before, replace batch_matmul with matmul and then alter line 81 in dual_encoder.py losses = tf.nn.sigmoid_cross_entropy_with_logits(logits, tf.to_float(targets)) with losses = tf.nn.sigmoid_cross_entropy_with_logits(logits=logits, labels=tf.to_float(targets))