📌  相关文章
📜  ModuleNotFoundError: No module named 'tensorflow.contrib' site:stackoverflow.com (1)

📅  最后修改于: 2023-12-03 15:17:40.563000             🧑  作者: Mango

ModuleNotFoundError: No module named 'tensorflow.contrib' 主题介绍

当我们在使用 TensorFlow 时,有时会遇到这样的错误:ModuleNotFoundError: No module named 'tensorflow.contrib'。这个错误通常发生在使用 TensorFlow 2.x 版本的时候,因为 TensorFlow 2.x 已经移除了 contrib 模块。所以,假如你的代码中有 import tensorflow.contrib 的话,就会报出这个错误。

那么怎么解决这个错误呢?以下提供两种可能的解决方案:

1. 将代码中的 "tensorflow.contrib" 替换为 "tensorflow.compat.v1"

因为 TensorFlow 兼容性模块中包含了 contrib 的相关内容,所以我们可以通过将代码中的 tensorflow.contrib 换成 tensorflow.compat.v1 来解决该问题。

例如,以下代码:

import tensorflow as tf

x = tf.placeholder(tf.float32, shape=[None, 784])
y_ = tf.placeholder(tf.float32, shape=[None, 10])
W = tf.Variable(tf.zeros([784,10]))
b = tf.Variable(tf.zeros([10]))
y = tf.nn.softmax(tf.matmul(x,W) + b)

cross_entropy = tf.reduce_mean(-tf.reduce_sum(y_ * tf.log(y), reduction_indices=[1]))
train_step = tf.train.GradientDescentOptimizer(0.5).minimize(cross_entropy)

with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())
    for i in range(1000):
        batch_xs, batch_ys = mnist.train.next_batch(100)
        sess.run(train_step, feed_dict={x: batch_xs, y_: batch_ys})

应该修改为:

import tensorflow.compat.v1 as tf

x = tf.placeholder(tf.float32, shape=[None, 784])
y_ = tf.placeholder(tf.float32, shape=[None, 10])
W = tf.Variable(tf.zeros([784,10]))
b = tf.Variable(tf.zeros([10]))
y = tf.nn.softmax(tf.matmul(x,W) + b)

cross_entropy = tf.reduce_mean(-tf.reduce_sum(y_ * tf.log(y), reduction_indices=[1]))
train_step = tf.train.GradientDescentOptimizer(0.5).minimize(cross_entropy)

with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())
    for i in range(1000):
        batch_xs, batch_ys = mnist.train.next_batch(100)
        sess.run(train_step, feed_dict={x: batch_xs, y_: batch_ys})
2. 降级 Tensorflow 到 1.x 版本

除了修改代码,我们也可以将 TensorFlow 降级到 1.x 版本,这样也可以避免出现该错误。

例如,针对 Linux系统:

!pip uninstall tensorflow
!pip install tensorflow==1.15

对于 Windows系统:

!pip uninstall tensorflow
!pip install tensorflow==1.15 -i https://pypi.tuna.tsinghua.edu.cn/simple/

总之,以上两种方案可以解决 "ModuleNotFoundError: No module named 'tensorflow.contrib'" 错误。