# Buggy code
def read_value(self, session=None):
    if session is not None:
        if not isinstance(session, tf.Session):
            raise ValueError("TensorFlow session expected as session argument.")
        is_built = self.is_built_coherence(session.graph)
        if is_built is Build.YES:
            return self._read_parameter_tensor(session)
    elif self._externally_defined:
        raise GPflowError("Externally defined parameter requires session.")
    return self._value


# Traceback (AttributeError)
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-3-e3c07a8fceb7> in <module>()
10                                 np.random.randn(M, D),
11                                 minibatch_size=2)
---> 12 model.compute_log_likelihood()

/[...]/GPflow/gpflow/decors.py in runnable(obj, *args, **kwargs)
152                     _setup_storage(store, *af_args, **af_kwargs)
153                     _build_method(method, obj, store)
--> 154             return _session_run(session, obj, store, *args, **kwargs)
155         return runnable
156     return autoflow_wrapper

/[...]/GPflow/gpflow/decors.py in _session_run(session, obj, store, *args, **kwargs)
189         feed_dict.update(obj.feeds)
190     initialize = kwargs.pop('initialize', False)
--> 191     obj.initialize(session=session, force=initialize)
192     return session.run(store['result'], **kwargs)
193

/[...]/GPflow/gpflow/core/node.py in initialize(self, session, force)
82                 session=session,
83                 force=force,
---> 84                 feed_dict=self.initializable_feeds)
85
86     def clear(self):

/[...]/GPflow/gpflow/misc.py in initialize_variables(variables, session, force, **run_kwargs)
82             initializer = tf.variables_initializer(variables)
83         else:
---> 84             uninitialized = tf.report_uninitialized_variables(var_list=variables)
85             def uninitialized_names():
86                 for uv in session.run(uninitialized):

/[...]/anaconda3/envs/py35cpu/lib/python3.5/site-packages/tensorflow/python/util/tf_should_use.py in wrapped(*args, **kwargs)
105   """
106   def wrapped(*args, **kwargs):
--> 107     return _add_should_use_warning(fn(*args, **kwargs))
108   return tf_decorator.make_decorator(
109       fn, wrapped, 'should_use_result',

/[...]/anaconda3/envs/py35cpu/lib/python3.5/site-packages/tensorflow/python/ops/variables.py in report_uninitialized_variables(var_list, name)
1519         variables_mask = math_ops.logical_not(
1520             array_ops.stack(
-> 1521                 [state_ops.is_variable_initialized(v) for v in var_list]))
1522         # Get a 1-D string tensor containing all the variable names.
1523         variable_names_tensor = array_ops.constant(

/[...]/anaconda3/envs/py35cpu/lib/python3.5/site-packages/tensorflow/python/ops/variables.py in <listcomp>(.0)
1519         variables_mask = math_ops.logical_not(
1520             array_ops.stack(
-> 1521                 [state_ops.is_variable_initialized(v) for v in var_list]))
1522         # Get a 1-D string tensor containing all the variable names.
1523         variable_names_tensor = array_ops.constant(

/[...]/anaconda3/envs/py35cpu/lib/python3.5/site-packages/tensorflow/python/ops/state_ops.py in is_variable_initialized(ref, name)
182     A `Tensor` of type `bool`.
183   """
--> 184   if ref.dtype._is_ref_dtype:
185     return gen_state_ops.is_variable_initialized(ref=ref, name=name)
186   # Handle resource variables.

AttributeError: 'Iterator' object has no attribute 'dtype'

# Fixed code
def read_value(self, session=None):
    if session is not None and not isinstance(session, tf.Session):
        raise ValueError("TensorFlow session expected as an argument.")
    if session is None and self._externally_defined:
        raise GPflowError("Externally defined parameter requires session.")
    elif session:
        is_built = self.is_built_coherence(session.graph)
        if is_built is Build.YES:
            return self._read_parameter_tensor(session)
    return self._value