There have been many cases ([here](https://stackoverflow.com/questions/45047589/tensorflow-fully-connected-not-working-in-unit-test-cases/45047635#45047635) and [here](https://stackoverflow.com/questions/44584809/why-this-tensorflow-tutorial-code-not-working/44585267#44585267)) of TensorFlow users adding

```py
init_op = tf.global_variables_initializer()

```

before defining any variables or operations and then getting an error along the lines of

```
Attempting to use uninitialized value

```

There is an explanation [here](https://stackoverflow.com/questions/44433438/understanding-tf-global-variables-initializer) but it makes no mention of the underlying `tf.global_variables_initializer` calls. It's almost copying TF API wholesale. This question focuses on the fact that there are still uninitialized values when some users call `sess.run(init_op)`. Example code and an analysis into what `tf.global_variables_initializer` would be great.