When I was working on a deep learning project using TensorFlow when I encountered an error that stopped me in my tracks. The error message read: “AttributeError: Module ‘tensorflow’ has no attribute ‘global_variables_initializer’“.
If you’re seeing this error too, don’t worry! It’s a common issue that many TensorFlow users face, especially when working with code examples from different versions of the library.
In this guide, I will explain why this error occurs and show you several ways to fix it. Let’s get in and get your TensorFlow code running smoothly again!
What Causes This Error?
The root cause of this error is typically a version mismatch. In older versions of TensorFlow (before 0.12), the function used to initialize all variables was called initialize_all_variables(). In newer versions, this was replaced with global_variables_initializer().
If you’re using a newer version of TensorFlow but running code written for an older version (or vice versa), you’ll encounter this error.
Let’s look at several ways to fix this issue.
Read AttributeError: Module ‘tensorflow’ has no attribute ‘truncated_normal_initializer’
Method 1: Update Your TensorFlow Code
The simplest solution is to update your code to use the correct function for your TensorFlow version.
For TensorFlow 1.x (Version 0.12 or Later)
If you’re using TensorFlow 1.x (version 0.12 or later), replace:
init = tf.initialize_all_variables()With:
init = tf.global_variables_initializer()For TensorFlow 2.x
If you’re using TensorFlow 2.x, you should use:
init = tf.compat.v1.global_variables_initializer()This is because TensorFlow 2.x has moved many TensorFlow 1.x functions to the tf.compat.v1 namespace for backward compatibility.
Method 2: Use TensorFlow’s Compatibility Features
TensorFlow provides compatibility features to help you run code written for older versions. If you’re using TensorFlow 2.x but need to run code written for TensorFlow 1.x, you can use:
import tensorflow.compat.v1 as tf
import numpy as np
# Use TensorFlow 1.x behavior
tf.disable_v2_behavior()
# Create sparse placeholder (like in TF 1.x)
placeholder = tf.sparse_placeholder(dtype=tf.float32, shape=[None, 4])
# Define a basic operation: convert sparse to dense and sum across rows
dense_tensor = tf.sparse_to_dense(placeholder.indices, placeholder.dense_shape, placeholder.values)
output = tf.reduce_sum(dense_tensor, axis=1)
# Create actual sparse data using SparseTensorValue (runtime value)
indices = np.array([[0, 1], [1, 2]], dtype=np.int64)
values = np.array([1.0, 2.0], dtype=np.float32)
dense_shape = np.array([2, 4], dtype=np.int64)
sparse_input = tf.SparseTensorValue(indices, values, dense_shape)
# Initialize any global variables (typical in TF 1.x)
init = tf.global_variables_initializer()
# Run everything inside a session
with tf.Session() as sess:
sess.run(init)
result = sess.run(output, feed_dict={placeholder: sparse_input})
print("Model output:", result)Output:
Model output: [1. 2.]You can see the output in the screenshot below.

This approach tells TensorFlow to use the 1.x API, which can be helpful when working with older codebases or tutorials.
Check out AttributeError: Module ‘tensorflow’ has no attribute ‘trainable_variables’
Method 3: Update Your TensorFlow Version
Another solution is to update your TensorFlow installation to the latest version:
pip install --upgrade tensorflowAfter updating, make sure to adjust your code according to the version you’re now using, as explained in Method 1.
Method 4: Downgrade TensorFlow (Not Recommended)
If you’re working with legacy code and don’t want to update it, you could downgrade your TensorFlow version. However, I don’t recommend this approach as newer versions often include important bug fixes and performance improvements.
If you still want to proceed, you can install a specific version of TensorFlow:
pip install tensorflow==0.11.0With this older version, you can use initialize_all_variables() directly.
Real-World Example: Train a Model for US Housing Prices
Let’s look at a practical example where this error might occur. Imagine we’re building a model to predict housing prices in the US market:
import tensorflow as tf
import numpy as np
import pandas as pd
# Sample US housing data (simplified)
# Features: square footage, bedrooms, age of house
X_train = np.array([
[1500, 3, 10], [2000, 4, 5], [1200, 2, 15],
[1800, 3, 7], [2200, 4, 2], [1600, 3, 20]
])
# Prices in thousands of dollars
y_train = np.array([[250], [350], [210], [290], [380], [260]])
# Create a simple model using TensorFlow 1.x style
X = tf.placeholder(tf.float32, shape=[None, 3])
y = tf.placeholder(tf.float32, shape=[None, 1])
W = tf.Variable(tf.random_normal([3, 1]))
b = tf.Variable(tf.zeros([1]))
prediction = tf.matmul(X, W) + b
loss = tf.reduce_mean(tf.square(prediction - y))
optimizer = tf.train.GradientDescentOptimizer(0.01).minimize(loss)
# Initialize variables - THIS LINE CAUSES THE ERROR IN NEWER VERSIONS
init = tf.initialize_all_variables() # Error in TF 0.12+
# To fix, use one of these depending on your TF version:
# For TF 1.x (0.12+): init = tf.global_variables_initializer()
# For TF 2.x: init = tf.compat.v1.global_variables_initializer()When running this code with a newer version of TensorFlow, you’ll encounter our error. The fix would be to replace the initialization line with the appropriate version for your TensorFlow installation.
Debug TensorFlow Version Issues
If you’re unsure which version of TensorFlow you’re using, you can check it with:
import tensorflow as tf
print(tf.__version__)This will help you determine which method to use for initializing variables.
Best Practices to Avoid This Error
To avoid running into this error in the future:
- Always check the TensorFlow version required by any tutorial or example code you’re following.
- Consider using virtual environments to manage different TensorFlow versions for different projects.
- Keep your code up to date with the latest TensorFlow API changes.
- When sharing code, always specify which TensorFlow version it was written for.
Work With Both TensorFlow 1.x and 2.x Code
If you need to work with both TensorFlow 1.x and 2.x code bases, consider using the following pattern at the beginning of your scripts:
import tensorflow as tf
# Check TensorFlow version
if tf.__version__.startswith('2'):
# TF 2.x code path
import tensorflow.compat.v1 as tf1
tf1.disable_v2_behavior()
init = tf1.global_variables_initializer()
else:
# TF 1.x code path
init = tf.global_variables_initializer()This approach allows your code to work regardless of which TensorFlow version is installed.
When I encounter version-specific errors like this one in my projects, I’ve found that taking a moment to understand the API changes between versions saves a lot of debugging time in the long run.
I hope this guide helps you resolve the “AttributeError: Module ‘tensorflow’ has no attribute ‘global_variables_initializer'” error in your code. Remember, keeping up with library changes is part of the journey as a Python developer!
You may read other TensorFlow-related tutorials:
- Fix Module ‘TensorFlow’ has no attribute ‘session’
- Module ‘TensorFlow’ has no attribute ‘get_default_graph’
- AttributeError: Module ‘tensorflow’ has no attribute ‘logging’

I am Bijay Kumar, a Microsoft MVP in SharePoint. Apart from SharePoint, I started working on Python, Machine learning, and artificial intelligence for the last 5 years. During this time I got expertise in various Python libraries also like Tkinter, Pandas, NumPy, Turtle, Django, Matplotlib, Tensorflow, Scipy, Scikit-Learn, etc… for various clients in the United States, Canada, the United Kingdom, Australia, New Zealand, etc. Check out my profile.