In [1]:
from sklearn import datasets
from sklearn import metrics
from sklearn.model_selection import train_test_split
import tensorflow as tf

In [2]:
def optimizer_exp_decay():
    global_step = tf.contrib.framework.get_or_create_global_step()
    learning_rate = tf.train.exponential_decay(
        learning_rate = 0.1, global_step=global_step,
        decay_steps=100, decay_rate=0.001)
    return tf.train.AdagradOptimizer(learning_rate=learning_rate)

In [3]:
iris = datasets.load_iris()
x_train, x_test, y_train, y_test = train_test_split(
    iris.data, iris.target, test_size=0.2, random_state=42)

feature_columns = tf.contrib.learn.infer_real_valued_columns_from_input(x_train)
classifier = tf.contrib.learn.DNNClassifier(feature_columns=feature_columns,
                                           hidden_units=[10, 20, 10],
                                           n_classes=3,
                                           optimizer=optimizer_exp_decay)

classifier.fit(x_train, y_train, steps=800)
predictions = list(classifier.predict(x_test, as_iterable=True))
score = metrics.accuracy_score(y_test, predictions)
print('Accuracy: {0:f}'.format(score))


WARNING:tensorflow:float64 is not supported by many models, consider casting to float32.
WARNING:tensorflow:Using temporary folder as model directory: /tmp/tmpmywphfkr
INFO:tensorflow:Using default config.
INFO:tensorflow:Using config: {'_task_type': None, '_save_checkpoints_steps': None, '_num_ps_replicas': 0, '_master': '', '_task_id': 0, '_is_chief': True, '_keep_checkpoint_max': 5, '_evaluation_master': '', '_tf_config': gpu_options {
  per_process_gpu_memory_fraction: 1.0
}
, '_tf_random_seed': None, '_save_summary_steps': 100, '_cluster_spec': <tensorflow.python.training.server_lib.ClusterSpec object at 0x7f208a991c50>, '_save_checkpoints_secs': 600, '_environment': 'local', '_keep_checkpoint_every_n_hours': 10000}
WARNING:tensorflow:From <ipython-input-3-26481773d80c>:11: calling BaseEstimator.fit (from tensorflow.contrib.learn.python.learn.estimators.estimator) with y is deprecated and will be removed after 2016-12-01.
Instructions for updating:
Estimator is decoupled from Scikit Learn interface by moving into
separate class SKCompat. Arguments x, y and batch_size are only
available in the SKCompat class, Estimator will only accept input_fn.
Example conversion:
  est = Estimator(...) -> est = SKCompat(Estimator(...))
WARNING:tensorflow:From <ipython-input-3-26481773d80c>:11: calling BaseEstimator.fit (from tensorflow.contrib.learn.python.learn.estimators.estimator) with x is deprecated and will be removed after 2016-12-01.
Instructions for updating:
Estimator is decoupled from Scikit Learn interface by moving into
separate class SKCompat. Arguments x, y and batch_size are only
available in the SKCompat class, Estimator will only accept input_fn.
Example conversion:
  est = Estimator(...) -> est = SKCompat(Estimator(...))
WARNING:tensorflow:float64 is not supported by many models, consider casting to float32.
WARNING:tensorflow:From /usr/local/lib/python3.5/dist-packages/tensorflow/contrib/learn/python/learn/estimators/head.py:1362: scalar_summary (from tensorflow.python.ops.logging_ops) is deprecated and will be removed after 2016-11-30.
Instructions for updating:
Please switch to tf.summary.scalar. Note that tf.summary.scalar uses the node name instead of the tag. This means that TensorFlow will automatically de-duplicate summary names based on the scope they are created in. Also, passing a tensor or list of tags to a scalar summary op is no longer supported.
/usr/local/lib/python3.5/dist-packages/tensorflow/python/util/deprecation.py:247: FutureWarning: comparison to `None` will result in an elementwise object comparison in the future.
  equality = a == b
INFO:tensorflow:Create CheckpointSaverHook.
---------------------------------------------------------------------------
InvalidArgumentError                      Traceback (most recent call last)
/usr/local/lib/python3.5/dist-packages/tensorflow/python/client/session.py in _do_call(self, fn, *args)
   1021     try:
-> 1022       return fn(*args)
   1023     except errors.OpError as e:

/usr/local/lib/python3.5/dist-packages/tensorflow/python/client/session.py in _run_fn(session, feed_dict, fetch_list, target_list, options, run_metadata)
   1003                                  feed_dict, fetch_list, target_list,
-> 1004                                  status, run_metadata)
   1005 

/usr/lib/python3.5/contextlib.py in __exit__(self, type, value, traceback)
     65             try:
---> 66                 next(self.gen)
     67             except StopIteration:

/usr/local/lib/python3.5/dist-packages/tensorflow/python/framework/errors_impl.py in raise_exception_on_not_ok_status()
    468           compat.as_text(pywrap_tensorflow.TF_Message(status)),
--> 469           pywrap_tensorflow.TF_GetCode(status))
    470   finally:

InvalidArgumentError: WhereOp: Race condition between counting the number of true elements and writing them.  When counting, saw 1908 elements; but when writing their indices, saw 18 elements.
	 [[Node: report_uninitialized_variables_1/boolean_mask/Where = Where[_device="/job:localhost/replica:0/task:0/cpu:0"](report_uninitialized_variables_1/boolean_mask/Reshape_1)]]

During handling of the above exception, another exception occurred:

InvalidArgumentError                      Traceback (most recent call last)
<ipython-input-3-26481773d80c> in <module>()
      9                                            optimizer=optimizer_exp_decay)
     10 
---> 11 classifier.fit(x_train, y_train, steps=800)
     12 predictions = list(classifier.predict(x_test, as_iterable=True))
     13 score = metrics.accuracy_score(y_test, predictions)

/usr/local/lib/python3.5/dist-packages/tensorflow/python/util/deprecation.py in new_func(*args, **kwargs)
    278             _call_location(), decorator_utils.get_qualified_name(func),
    279             func.__module__, arg_name, date, instructions)
--> 280       return func(*args, **kwargs)
    281     new_func.__doc__ = _add_deprecated_arg_notice_to_docstring(
    282         func.__doc__, date, instructions)

/usr/local/lib/python3.5/dist-packages/tensorflow/contrib/learn/python/learn/estimators/estimator.py in fit(self, x, y, input_fn, steps, batch_size, monitors, max_steps)
    408     _verify_input_args(x, y, input_fn, None, batch_size)
    409     if x is not None:
--> 410       SKCompat(self).fit(x, y, batch_size, steps, max_steps, monitors)
    411       return self
    412 

/usr/local/lib/python3.5/dist-packages/tensorflow/contrib/learn/python/learn/estimators/estimator.py in fit(self, x, y, batch_size, steps, max_steps, monitors)
   1351                         steps=steps,
   1352                         max_steps=max_steps,
-> 1353                         monitors=all_monitors)
   1354     return self
   1355 

/usr/local/lib/python3.5/dist-packages/tensorflow/python/util/deprecation.py in new_func(*args, **kwargs)
    278             _call_location(), decorator_utils.get_qualified_name(func),
    279             func.__module__, arg_name, date, instructions)
--> 280       return func(*args, **kwargs)
    281     new_func.__doc__ = _add_deprecated_arg_notice_to_docstring(
    282         func.__doc__, date, instructions)

/usr/local/lib/python3.5/dist-packages/tensorflow/contrib/learn/python/learn/estimators/estimator.py in fit(self, x, y, input_fn, steps, batch_size, monitors, max_steps)
    424       hooks.append(basic_session_run_hooks.StopAtStepHook(steps, max_steps))
    425 
--> 426     loss = self._train_model(input_fn=input_fn, hooks=hooks)
    427     logging.info('Loss for final step: %s.', loss)
    428     return self

/usr/local/lib/python3.5/dist-packages/tensorflow/contrib/learn/python/learn/estimators/estimator.py in _train_model(self, input_fn, hooks)
    979           save_checkpoint_secs=0,  # Saving is handled by a hook.
    980           save_summaries_steps=self._config.save_summary_steps,
--> 981           config=self.config.tf_config) as mon_sess:
    982         loss = None
    983         while not mon_sess.should_stop():

/usr/local/lib/python3.5/dist-packages/tensorflow/python/training/monitored_session.py in MonitoredTrainingSession(master, is_chief, checkpoint_dir, scaffold, hooks, chief_only_hooks, save_checkpoint_secs, save_summaries_steps, config)
    313   if hooks:
    314     all_hooks.extend(hooks)
--> 315   return MonitoredSession(session_creator=session_creator, hooks=all_hooks)
    316 
    317 

/usr/local/lib/python3.5/dist-packages/tensorflow/python/training/monitored_session.py in __init__(self, session_creator, hooks)
    599   def __init__(self, session_creator=None, hooks=None):
    600     super(MonitoredSession, self).__init__(
--> 601         session_creator, hooks, should_recover=True)
    602 
    603 

/usr/local/lib/python3.5/dist-packages/tensorflow/python/training/monitored_session.py in __init__(self, session_creator, hooks, should_recover)
    432         hooks=self._hooks)
    433     if should_recover:
--> 434       self._sess = _RecoverableSession(self._coordinated_creator)
    435     else:
    436       self._sess = self._coordinated_creator.create_session()

/usr/local/lib/python3.5/dist-packages/tensorflow/python/training/monitored_session.py in __init__(self, sess_creator)
    765     """
    766     self._sess_creator = sess_creator
--> 767     _WrappedSession.__init__(self, self._create_session())
    768 
    769   def _create_session(self):

/usr/local/lib/python3.5/dist-packages/tensorflow/python/training/monitored_session.py in _create_session(self)
    770     while True:
    771       try:
--> 772         return self._sess_creator.create_session()
    773       except errors.AbortedError:
    774         logging.info('An AbortedError was raised during initialization. '

/usr/local/lib/python3.5/dist-packages/tensorflow/python/training/monitored_session.py in create_session(self)
    492       """Creates a coordinated session."""
    493       # Keep the tf_sess for unit testing.
--> 494       self.tf_sess = self._session_creator.create_session()
    495       # We don't want coordinator to suppress any exception.
    496       self.coord = coordinator.Coordinator(clean_stop_exception_types=[])

/usr/local/lib/python3.5/dist-packages/tensorflow/python/training/monitored_session.py in create_session(self)
    373         init_op=self._scaffold.init_op,
    374         init_feed_dict=self._scaffold.init_feed_dict,
--> 375         init_fn=self._scaffold.init_fn)
    376 
    377 

/usr/local/lib/python3.5/dist-packages/tensorflow/python/training/session_manager.py in prepare_session(self, master, init_op, saver, checkpoint_dir, checkpoint_filename_with_path, wait_for_checkpoint, max_wait_secs, config, init_feed_dict, init_fn)
    264         init_fn(sess)
    265 
--> 266     local_init_success, msg = self._try_run_local_init_op(sess)
    267     if not local_init_success:
    268       raise RuntimeError(

/usr/local/lib/python3.5/dist-packages/tensorflow/python/training/session_manager.py in _try_run_local_init_op(self, sess)
    463     """
    464     if self._local_init_op is not None:
--> 465       is_ready_for_local_init, msg = self._model_ready_for_local_init(sess)
    466       if is_ready_for_local_init:
    467         sess.run(self._local_init_op)

/usr/local/lib/python3.5/dist-packages/tensorflow/python/training/session_manager.py in _model_ready_for_local_init(self, sess)
    448     """
    449     return _ready(self._ready_for_local_init_op, sess,
--> 450                   "Model not ready for local init")
    451 
    452   def _try_run_local_init_op(self, sess):

/usr/local/lib/python3.5/dist-packages/tensorflow/python/training/session_manager.py in _ready(op, sess, msg)
    490   else:
    491     try:
--> 492       ready_value = sess.run(op)
    493       # The model is considered ready if ready_op returns an empty 1-D tensor.
    494       # Also compare to `None` and dtype being int32 for backward

/usr/local/lib/python3.5/dist-packages/tensorflow/python/client/session.py in run(self, fetches, feed_dict, options, run_metadata)
    765     try:
    766       result = self._run(None, fetches, feed_dict, options_ptr,
--> 767                          run_metadata_ptr)
    768       if run_metadata:
    769         proto_data = tf_session.TF_GetBuffer(run_metadata_ptr)

/usr/local/lib/python3.5/dist-packages/tensorflow/python/client/session.py in _run(self, handle, fetches, feed_dict, options, run_metadata)
    963     if final_fetches or final_targets:
    964       results = self._do_run(handle, final_targets, final_fetches,
--> 965                              feed_dict_string, options, run_metadata)
    966     else:
    967       results = []

/usr/local/lib/python3.5/dist-packages/tensorflow/python/client/session.py in _do_run(self, handle, target_list, fetch_list, feed_dict, options, run_metadata)
   1013     if handle is None:
   1014       return self._do_call(_run_fn, self._session, feed_dict, fetch_list,
-> 1015                            target_list, options, run_metadata)
   1016     else:
   1017       return self._do_call(_prun_fn, self._session, handle, feed_dict,

/usr/local/lib/python3.5/dist-packages/tensorflow/python/client/session.py in _do_call(self, fn, *args)
   1033         except KeyError:
   1034           pass
-> 1035       raise type(e)(node_def, op, message)
   1036 
   1037   def _extend_graph(self):

InvalidArgumentError: WhereOp: Race condition between counting the number of true elements and writing them.  When counting, saw 1908 elements; but when writing their indices, saw 18 elements.
	 [[Node: report_uninitialized_variables_1/boolean_mask/Where = Where[_device="/job:localhost/replica:0/task:0/cpu:0"](report_uninitialized_variables_1/boolean_mask/Reshape_1)]]

Caused by op 'report_uninitialized_variables_1/boolean_mask/Where', defined at:
  File "/usr/lib/python3.5/runpy.py", line 184, in _run_module_as_main
    "__main__", mod_spec)
  File "/usr/lib/python3.5/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/home/pageu/.local/lib/python3.5/site-packages/ipykernel/__main__.py", line 3, in <module>
    app.launch_new_instance()
  File "/home/pageu/.local/lib/python3.5/site-packages/traitlets/config/application.py", line 658, in launch_instance
    app.start()
  File "/home/pageu/.local/lib/python3.5/site-packages/ipykernel/kernelapp.py", line 474, in start
    ioloop.IOLoop.instance().start()
  File "/home/pageu/.local/lib/python3.5/site-packages/zmq/eventloop/ioloop.py", line 177, in start
    super(ZMQIOLoop, self).start()
  File "/home/pageu/.local/lib/python3.5/site-packages/tornado/ioloop.py", line 887, in start
    handler_func(fd_obj, events)
  File "/home/pageu/.local/lib/python3.5/site-packages/tornado/stack_context.py", line 275, in null_wrapper
    return fn(*args, **kwargs)
  File "/home/pageu/.local/lib/python3.5/site-packages/zmq/eventloop/zmqstream.py", line 440, in _handle_events
    self._handle_recv()
  File "/home/pageu/.local/lib/python3.5/site-packages/zmq/eventloop/zmqstream.py", line 472, in _handle_recv
    self._run_callback(callback, msg)
  File "/home/pageu/.local/lib/python3.5/site-packages/zmq/eventloop/zmqstream.py", line 414, in _run_callback
    callback(*args, **kwargs)
  File "/home/pageu/.local/lib/python3.5/site-packages/tornado/stack_context.py", line 275, in null_wrapper
    return fn(*args, **kwargs)
  File "/home/pageu/.local/lib/python3.5/site-packages/ipykernel/kernelbase.py", line 276, in dispatcher
    return self.dispatch_shell(stream, msg)
  File "/home/pageu/.local/lib/python3.5/site-packages/ipykernel/kernelbase.py", line 228, in dispatch_shell
    handler(stream, idents, msg)
  File "/home/pageu/.local/lib/python3.5/site-packages/ipykernel/kernelbase.py", line 390, in execute_request
    user_expressions, allow_stdin)
  File "/home/pageu/.local/lib/python3.5/site-packages/ipykernel/ipkernel.py", line 196, in do_execute
    res = shell.run_cell(code, store_history=store_history, silent=silent)
  File "/home/pageu/.local/lib/python3.5/site-packages/ipykernel/zmqshell.py", line 501, in run_cell
    return super(ZMQInteractiveShell, self).run_cell(*args, **kwargs)
  File "/home/pageu/.local/lib/python3.5/site-packages/IPython/core/interactiveshell.py", line 2717, in run_cell
    interactivity=interactivity, compiler=compiler, result=result)
  File "/home/pageu/.local/lib/python3.5/site-packages/IPython/core/interactiveshell.py", line 2821, in run_ast_nodes
    if self.run_code(code, result):
  File "/home/pageu/.local/lib/python3.5/site-packages/IPython/core/interactiveshell.py", line 2881, in run_code
    exec(code_obj, self.user_global_ns, self.user_ns)
  File "<ipython-input-3-26481773d80c>", line 11, in <module>
    classifier.fit(x_train, y_train, steps=800)
  File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/util/deprecation.py", line 280, in new_func
    return func(*args, **kwargs)
  File "/usr/local/lib/python3.5/dist-packages/tensorflow/contrib/learn/python/learn/estimators/estimator.py", line 410, in fit
    SKCompat(self).fit(x, y, batch_size, steps, max_steps, monitors)
  File "/usr/local/lib/python3.5/dist-packages/tensorflow/contrib/learn/python/learn/estimators/estimator.py", line 1353, in fit
    monitors=all_monitors)
  File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/util/deprecation.py", line 280, in new_func
    return func(*args, **kwargs)
  File "/usr/local/lib/python3.5/dist-packages/tensorflow/contrib/learn/python/learn/estimators/estimator.py", line 426, in fit
    loss = self._train_model(input_fn=input_fn, hooks=hooks)
  File "/usr/local/lib/python3.5/dist-packages/tensorflow/contrib/learn/python/learn/estimators/estimator.py", line 981, in _train_model
    config=self.config.tf_config) as mon_sess:
  File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/training/monitored_session.py", line 315, in MonitoredTrainingSession
    return MonitoredSession(session_creator=session_creator, hooks=all_hooks)
  File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/training/monitored_session.py", line 601, in __init__
    session_creator, hooks, should_recover=True)
  File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/training/monitored_session.py", line 434, in __init__
    self._sess = _RecoverableSession(self._coordinated_creator)
  File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/training/monitored_session.py", line 767, in __init__
    _WrappedSession.__init__(self, self._create_session())
  File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/training/monitored_session.py", line 772, in _create_session
    return self._sess_creator.create_session()
  File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/training/monitored_session.py", line 494, in create_session
    self.tf_sess = self._session_creator.create_session()
  File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/training/monitored_session.py", line 366, in create_session
    self._scaffold.finalize()
  File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/training/monitored_session.py", line 166, in finalize
    default_ready_for_local_init_op)
  File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/training/monitored_session.py", line 232, in get_or_default
    op = default_constructor()
  File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/training/monitored_session.py", line 163, in default_ready_for_local_init_op
    variables.global_variables())
  File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/ops/variables.py", line 1320, in report_uninitialized_variables
    return array_ops.boolean_mask(variable_names_tensor, variables_mask)
  File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/ops/array_ops.py", line 1121, in boolean_mask
    return _apply_mask_1d(tensor, mask)
  File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/ops/array_ops.py", line 1093, in _apply_mask_1d
    indices = squeeze(where(mask), squeeze_dims=[1])
  File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/ops/array_ops.py", line 2317, in where
    return gen_array_ops.where(input=condition, name=name)
  File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/ops/gen_array_ops.py", line 4010, in where
    result = _op_def_lib.apply_op("Where", input=input, name=name)
  File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/framework/op_def_library.py", line 763, in apply_op
    op_def=op_def)
  File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/framework/ops.py", line 2395, in create_op
    original_op=self._default_original_op, op_def=op_def)
  File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/framework/ops.py", line 1264, in __init__
    self._traceback = _extract_stack()

InvalidArgumentError (see above for traceback): WhereOp: Race condition between counting the number of true elements and writing them.  When counting, saw 1908 elements; but when writing their indices, saw 18 elements.
	 [[Node: report_uninitialized_variables_1/boolean_mask/Where = Where[_device="/job:localhost/replica:0/task:0/cpu:0"](report_uninitialized_variables_1/boolean_mask/Reshape_1)]]

In [ ]: