【问题标题】:ImportError: TensorBoard导入错误:张量板
【发布时间】:2020-01-15 00:02:45
【问题描述】:

我在 Anaconda 环境中使用 Python(jupyter notebook)

操作系统:Ubuntu 张量流版本:1.14.0 Python 版本:3.6

https://github.com/tensorflow/tensorboard/issues/1425 这是同一个问题,但答案没有帮助。 除了尝试重新安装 Tensorflow 之外,是否有解决此问题的方法?还是我应该升级我的 tensorflow 版本?

    from keras.callbacks import  TensorBoard

    tensorboard = TensorBoard(log_dir='graph_1', histogram_freq=0, 
    batch_size=512, write_graph=True, write_grads=False, 
    write_images=False, embeddings_freq=0, embeddings_layer_names=None, 
    embeddings_metadata=None, embeddings_data=None, update_freq='epoch')

抛出如下错误:

ImportError                               Traceback (most recent call last)
~/anaconda3/lib/python3.6/site-packages/keras/callbacks.py in __init__(self, log_dir, histogram_freq, batch_size, write_graph, write_grads, write_images, embeddings_freq, embeddings_layer_names, embeddings_metadata, embeddings_data, update_freq)
    744             import tensorflow as tf
--> 745             from tensorflow.contrib.tensorboard.plugins import projector
    746         except ImportError:

~/anaconda3/lib/python3.6/site-packages/tensorflow/contrib/__init__.py in <module>
     40 from tensorflow.contrib import distribute
---> 41 from tensorflow.contrib import distributions
     42 from tensorflow.contrib import estimator

~/anaconda3/lib/python3.6/site-packages/tensorflow/contrib/distributions/__init__.py in <module>
     43   from tensorflow.contrib.distributions.python.ops.distribution_util import tridiag
---> 44   from tensorflow.contrib.distributions.python.ops.estimator import *
     45   from tensorflow.contrib.distributions.python.ops.geometric import *

~/anaconda3/lib/python3.6/site-packages/tensorflow/contrib/distributions/python/ops/estimator.py in <module>
     20 
---> 21 from tensorflow.contrib.learn.python.learn.estimators.head import _compute_weighted_loss
     22 from tensorflow.contrib.learn.python.learn.estimators.head import _RegressionHead

~/anaconda3/lib/python3.6/site-packages/tensorflow/contrib/learn/__init__.py in <module>
     92 # pylint: disable=wildcard-import
---> 93 from tensorflow.contrib.learn.python.learn import *
     94 # pylint: enable=wildcard-import

~/anaconda3/lib/python3.6/site-packages/tensorflow/contrib/learn/python/__init__.py in <module>
     27 # pylint: disable=wildcard-import
---> 28 from tensorflow.contrib.learn.python.learn import *
     29 # pylint: enable=wildcard-import

~/anaconda3/lib/python3.6/site-packages/tensorflow/contrib/learn/python/learn/__init__.py in <module>
     29 from tensorflow.contrib.learn.python.learn import datasets
---> 30 from tensorflow.contrib.learn.python.learn import estimators
     31 from tensorflow.contrib.learn.python.learn import graph_actions

~/anaconda3/lib/python3.6/site-packages/tensorflow/contrib/learn/python/learn/estimators/__init__.py in <module>
    301 from tensorflow.contrib.learn.python.learn.estimators.constants import ProblemType
--> 302 from tensorflow.contrib.learn.python.learn.estimators.dnn import DNNClassifier
    303 from tensorflow.contrib.learn.python.learn.estimators.dnn import DNNEstimator

~/anaconda3/lib/python3.6/site-packages/tensorflow/contrib/learn/python/learn/estimators/dnn.py in <module>
     33 from tensorflow.contrib.learn.python.learn import metric_spec
---> 34 from tensorflow.contrib.learn.python.learn.estimators import dnn_linear_combined
     35 from tensorflow.contrib.learn.python.learn.estimators import estimator

~/anaconda3/lib/python3.6/site-packages/tensorflow/contrib/learn/python/learn/estimators/dnn_linear_combined.py in <module>
     35 from tensorflow.contrib.learn.python.learn import metric_spec
---> 36 from tensorflow.contrib.learn.python.learn.estimators import estimator
     37 from tensorflow.contrib.learn.python.learn.estimators import head as head_lib

~/anaconda3/lib/python3.6/site-packages/tensorflow/contrib/learn/python/learn/estimators/estimator.py in <module>
     51 from tensorflow.contrib.learn.python.learn.estimators._sklearn import NotFittedError
---> 52 from tensorflow.contrib.learn.python.learn.learn_io import data_feeder
     53 from tensorflow.contrib.learn.python.learn.utils import export

~/anaconda3/lib/python3.6/site-packages/tensorflow/contrib/learn/python/learn/learn_io/__init__.py in <module>
     36 from tensorflow.contrib.learn.python.learn.learn_io.graph_io import read_keyed_batch_features_shared_queue
---> 37 from tensorflow.contrib.learn.python.learn.learn_io.numpy_io import numpy_input_fn
     38 from tensorflow.contrib.learn.python.learn.learn_io.pandas_io import extract_pandas_data

~/anaconda3/lib/python3.6/site-packages/tensorflow/contrib/learn/python/learn/learn_io/numpy_io.py in <module>
     25 
---> 26 from tensorflow.python.estimator.inputs.numpy_io import numpy_input_fn as core_numpy_input_fn
     27 from tensorflow.python.util.deprecation import deprecated

~/anaconda3/lib/python3.6/site-packages/tensorflow/python/estimator/inputs/numpy_io.py in <module>
     25 
---> 26 from tensorflow_estimator.python.estimator.inputs import numpy_io
     27 

~/anaconda3/lib/python3.6/site-packages/tensorflow_estimator/python/estimator/inputs/numpy_io.py in <module>
     25 
---> 26 from tensorflow_estimator.python.estimator.inputs.queues import feeding_functions
     27 from tensorflow.python.util.tf_export import estimator_export

~/anaconda3/lib/python3.6/site-packages/tensorflow_estimator/__init__.py in <module>
      9 
---> 10 from tensorflow_estimator._api.v2 import estimator
     11 _names_with_underscore = []

~/anaconda3/lib/python3.6/site-packages/tensorflow_estimator/_api/v2/estimator/__init__.py in <module>
      9 
---> 10 from tensorflow_estimator._api.v2.estimator import experimental
     11 from tensorflow_estimator._api.v2.estimator import export

~/anaconda3/lib/python3.6/site-packages/tensorflow_estimator/_api/v2/estimator/experimental/__init__.py in <module>
     10 from tensorflow_estimator.python.estimator.canned.linear import LinearSDCA
---> 11 from tensorflow_estimator.python.estimator.canned.rnn import RNNClassifier
     12 from tensorflow_estimator.python.estimator.canned.rnn import RNNEstimator

~/anaconda3/lib/python3.6/site-packages/tensorflow_estimator/python/estimator/canned/rnn.py in <module>
     22 
---> 23 from tensorflow.python.feature_column import dense_features
     24 from tensorflow.python.feature_column import feature_column_lib as fc

ImportError: cannot import name 'dense_features'

During handling of the above exception, another exception occurred:

ImportError                               Traceback (most recent call last)
<ipython-input-83-0d8f7236c1d1> in <module>
     16 reduce_lr_1 = ReduceLROnPlateau(monitor = 'val_loss', factor = 0.2, patience = 1, verbose = 1, min_delta = 0.0001)
     17 
---> 18 tensorboard_1 = TensorBoard(log_dir='graph_1', histogram_freq=0, batch_size=512, write_graph=True, write_grads=False, write_images=False, embeddings_freq=0, embeddings_layer_names=None, embeddings_metadata=None, embeddings_data=None, update_freq='epoch')
     19 
     20 callbacks_1 = [checkpoint_1,earlystop_1,tensorboard_1,reduce_lr_1]

~/anaconda3/lib/python3.6/site-packages/keras/callbacks.py in __init__(self, log_dir, histogram_freq, batch_size, write_graph, write_grads, write_images, embeddings_freq, embeddings_layer_names, embeddings_metadata, embeddings_data, update_freq)
    745             from tensorflow.contrib.tensorboard.plugins import projector
    746         except ImportError:
--> 747             raise ImportError('You need the TensorFlow module installed to '
    748                               'use TensorBoard.')
    749 

ImportError: You need the TensorFlow module installed to use TensorBoard.

【问题讨论】:

    标签: python tensorflow ubuntu python-3.6 tensorboard


    【解决方案1】:

    正如错误清楚地表明ImportError: You need the TensorFlow module installed to use TensorBoard

    您当前的 Tensorflow (TF=1.14.0) 安装似乎存在问题。

    请求您升级最新版本的 Tensorflow (TF 2.2.0) 如下

    pip install tensorflow==2.2.0
    #OR
    pip install --upgrade tensorflow
    

    我在 Jupyter Notebook 中使用 TF 2.2.0 为 TensorBoard 启用了可视化功能,如下所示

    tf.keras.callbacks.TensorBoard
    

    这是可视化模型准确性和损失的完整工作代码,如下所示

    %load_ext tensorboard
    
    import tensorflow as tf
    import datetime, os
    
    fashion_mnist = tf.keras.datasets.fashion_mnist
    
    (x_train, y_train),(x_test, y_test) = fashion_mnist.load_data()
    x_train, x_test = x_train / 255.0, x_test / 255.0
    
    def create_model():
      return tf.keras.models.Sequential([
        tf.keras.layers.Flatten(input_shape=(28, 28)),
        tf.keras.layers.Dense(512, activation='relu'),
        tf.keras.layers.Dropout(0.2),
        tf.keras.layers.Dense(10, activation='softmax')
      ])
    
    def train_model():
    
      model = create_model()
      model.compile(optimizer='adam',
                    loss='sparse_categorical_crossentropy',
                    metrics=['accuracy'])
    
      logdir = os.path.join("logs", datetime.datetime.now().strftime("%Y%m%d-%H%M%S"))
      tensorboard_callback = tf.keras.callbacks.TensorBoard(logdir, histogram_freq=1)
    
      model.fit(x=x_train, 
                y=y_train, 
                epochs=5, 
                validation_data=(x_test, y_test), 
                callbacks=[tensorboard_callback])
    
    train_model()
    
     %tensorboard --logdir logs
    

    输出:

    Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/train-labels-idx1-ubyte.gz
    32768/29515 [=================================] - 0s 0us/step
    Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/train-images-idx3-ubyte.gz
    26427392/26421880 [==============================] - 0s 0us/step
    Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/t10k-labels-idx1-ubyte.gz
    8192/5148 [===============================================] - 0s 0us/step
    Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/t10k-images-idx3-ubyte.gz
    4423680/4422102 [==============================] - 0s 0us/step
    Epoch 1/5
    1875/1875 [==============================] - 8s 4ms/step - loss: 0.4957 - accuracy: 0.8237 - val_loss: 0.4407 - val_accuracy: 0.8385
    Epoch 2/5
    1875/1875 [==============================] - 8s 4ms/step - loss: 0.3816 - accuracy: 0.8608 - val_loss: 0.3885 - val_accuracy: 0.8613
    Epoch 3/5
    1875/1875 [==============================] - 8s 4ms/step - loss: 0.3503 - accuracy: 0.8717 - val_loss: 0.3683 - val_accuracy: 0.8661
    Epoch 4/5
    1875/1875 [==============================] - 8s 4ms/step - loss: 0.3255 - accuracy: 0.8804 - val_loss: 0.3495 - val_accuracy: 0.8719
    Epoch 5/5
    1875/1875 [==============================] - 8s 4ms/step - loss: 0.3137 - accuracy: 0.8850 - val_loss: 0.3532 - val_accuracy: 0.8716
    

    对于 Jupyter 用户:如果您已将 Jupyter 和 TensorBoard 安装到同一个 virtualenv 中,那么您应该可以开始使用了。如果您使用更复杂的设置,例如全局 Jupyter 安装和用于不同 Conda/virtualenv 环境的内核,那么您必须确保 tensorboard 二进制文件位于 Jupyter notebook 上下文中的 PATH 上。一种方法是修改 kernel_spec 以将环境的 bin 目录添加到 PATH,如 described here

    更多详情请参考here

    【讨论】:

      猜你喜欢
      • 2018-07-06
      • 2017-02-11
      • 1970-01-01
      • 1970-01-01
      • 2018-07-20
      • 2016-03-10
      • 2018-10-31
      • 2017-11-28
      相关资源
      最近更新 更多