【问题标题】:tf.contrib does not exist in tensorflow 2.0 Should I download my version of tensorflow?tensorflow 2.0 中不存在 tf.contrib 我应该下载我的 tensorflow 版本吗?
【发布时间】:2020-04-08 12:42:45
【问题描述】:

我正在尝试使用 keras 和 tensorflow 创建一个神经网络。它实现了一个顺序模型,该模型会在一些依赖库中产生一些问题。

! python -m pip install tensorflow.contrib
from keras.models import Sequential
from keras.layers import Dense, Dropout
from keras.constraints import maxnorm
from tensorflow.python.compiler.tensorrt import trt_convert as trt

def create_model(input_dim, output_dim):
    print(output_dim)
    # create model
    model = Sequential()
    # input layer
    model.add(Dense(100, input_dim=input_dim, activation='relu', kernel_constraint=maxnorm(3)))
    model.add(Dropout(0.2))

    # hidden layer
    model.add(Dense(60, activation='relu', kernel_constraint=maxnorm(3)))
    model.add(Dropout(0.2))

    # output layer
    model.add(Dense(output_dim, activation='softmax'))

    # Compile model
    model.compile(loss='categorical_crossentropy', loss_weights=None, optimizer='adam', metrics=['accuracy'])
    #model.compile(loss=focal_loss(alpha=1), loss_weights=None, optimizer='nadam', metrics=['accuracy'])

    return model

但它会返回:

---------------------------------------------------------------------------
ModuleNotFoundError                       Traceback (most recent call last)
<ipython-input-64-26ffb3a98319> in <module>
----> 1 from keras.models import Sequential
      2 from keras.layers import Dense, Dropout
      3 from keras.constraints import maxnorm
      4 from tensorflow.python.compiler.tensorrt import trt_convert as trt
      5 

C:\ProgramData\Anaconda3\lib\site-packages\keras\__init__.py in <module>
      2 
      3 from . import utils
----> 4 from . import activations
      5 from . import applications
      6 from . import backend

C:\ProgramData\Anaconda3\lib\site-packages\keras\activations.py in <module>
      4 from . import backend as K
      5 from .utils.generic_utils import deserialize_keras_object
----> 6 from .engine import Layer
      7 
      8 

C:\ProgramData\Anaconda3\lib\site-packages\keras\engine\__init__.py in <module>
      6 from .topology import Layer
      7 from .topology import get_source_inputs
----> 8 from .training import Model

C:\ProgramData\Anaconda3\lib\site-packages\keras\engine\training.py in <module>
     23 from .. import metrics as metrics_module
     24 from ..utils.generic_utils import Progbar
---> 25 from .. import callbacks as cbks
     26 from ..legacy import interfaces
     27 

C:\ProgramData\Anaconda3\lib\site-packages\keras\callbacks.py in <module>
     24 if K.backend() == 'tensorflow':
     25     import tensorflow as tf
---> 26     from tensorflow.contrib.tensorboard.plugins import projector
     27 
     28 

ModuleNotFoundError: No module named 'tensorflow.contrib'

确实,看来tf.contrib does not exist in tensorflow 2.0。我该怎么办?我应该下载我的 tensorflow 版本吗? 我在 Anaconda 中使用 jupyter 的笔记本。这是我的 tensorflow 版本:

(base) C:\Users\antoi>python -m pip list | findstr tensor
tensorboard                        2.1.1
tensorflow                         2.1.0
tensorflow-addons                  0.8.3
tensorflow-estimator               2.1.0
tensorflow-hub                     0.7.0
tensorflow-probability             0.7.0
WARNING: You are using pip version 19.2.

测试 Jdhesa 答案

我不再有 tf.contrib 错误,但在以下库中又出现了一个错误:

from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Dropout
from tensorflow.keras.constraints import MaxNorm

def create_model(input_dim, output_dim):
    print(output_dim)
    # create model
    model = Sequential()
    # input layer
    model.add(Dense(100, input_dim=input_dim, activation='relu', kernel_constraint=MaxNorm(3)))
    model.add(Dropout(0.2))

    # hidden layer
    model.add(Dense(60, activation='relu', kernel_constraint=MaxNorm(3)))
    model.add(Dropout(0.2))

    # output layer
    model.add(Dense(output_dim, activation='softmax'))

    # Compile model
    model.compile(loss='categorical_crossentropy', loss_weights=None, optimizer='adam', metrics=['accuracy'])
    #model.compile(loss=focal_loss(alpha=1), loss_weights=None, optimizer='nadam', metrics=['accuracy'])

    return model

它不会产生任何错误,但现在我的 jupyter 内核稍后在调用 model.fit 时崩溃

from tensorflow.keras.callbacks import ModelCheckpoint
from tensorflow.keras.models import load_model

model = create_model(x_train.shape[1], y_train.shape[1])

epochs =  30
batch_sz = 64

print("Beginning model training with batch size {} and {} epochs".format(batch_sz, epochs))

checkpoint = ModelCheckpoint("lc_model.h5", monitor='val_acc', verbose=0, save_best_only=True, mode='auto', period=1)


# train the model
history = model.fit(x_train.as_matrix(),
                y_train.as_matrix(),
                validation_split=0.2,
                epochs=epochs,  
                batch_size=batch_sz, 
                verbose=2,
                class_weight = weights, # class_weight tells the model to "pay more attention" to samples from an under-represented grade class.
                callbacks=[checkpoint])

更改张量流版本

(base) C:\Users\antoi>python -m pip install tensorflow-gpu==1.14 --user
Collecting tensorflow-gpu==1.14
  Using cached https://files.pythonhosted.org/packages/81/d1/9222b9aac2fa27dccaef38917cde84c24888f3cd0dd139c7e12be9f49a7a/tensorflow_gpu-1.14.0-cp37-cp37m-win_amd64.whl
Requirement already satisfied: google-pasta>=0.1.6 in c:\programdata\anaconda3\lib\site-packages (from tensorflow-gpu==1.14) (0.1.7)
Requirement already satisfied: astor>=0.6.0 in c:\programdata\anaconda3\lib\site-packages (from tensorflow-gpu==1.14) (0.8.0)
Collecting tensorboard<1.15.0,>=1.14.0 (from tensorflow-gpu==1.14)
  Using cached https://files.pythonhosted.org/packages/91/2d/2ed263449a078cd9c8a9ba50ebd50123adf1f8cfbea1492f9084169b89d9/tensorboard-1.14.0-py3-none-any.whl
Requirement already satisfied: keras-preprocessing>=1.0.5 in c:\programdata\anaconda3\lib\site-packages (from tensorflow-gpu==1.14) (1.1.0)
Requirement already satisfied: keras-applications>=1.0.6 in c:\programdata\anaconda3\lib\site-packages (from tensorflow-gpu==1.14) (1.0.8)
Requirement already satisfied: wheel>=0.26 in c:\programdata\anaconda3\lib\site-packages (from tensorflow-gpu==1.14) (0.33.6)
Requirement already satisfied: protobuf>=3.6.1 in c:\programdata\anaconda3\lib\site-packages (from tensorflow-gpu==1.14) (3.10.0)
Requirement already satisfied: termcolor>=1.1.0 in c:\programdata\anaconda3\lib\site-packages (from tensorflow-gpu==1.14) (1.1.0)
Requirement already satisfied: absl-py>=0.7.0 in c:\programdata\anaconda3\lib\site-packages (from tensorflow-gpu==1.14) (0.9.0)
Requirement already satisfied: six>=1.10.0 in c:\programdata\anaconda3\lib\site-packages (from tensorflow-gpu==1.14) (1.13.0)
Requirement already satisfied: wrapt>=1.11.1 in c:\programdata\anaconda3\lib\site-packages (from tensorflow-gpu==1.14) (1.11.2)
Collecting tensorflow-estimator<1.15.0rc0,>=1.14.0rc0 (from tensorflow-gpu==1.14)
  Using cached https://files.pythonhosted.org/packages/3c/d5/21860a5b11caf0678fbc8319341b0ae21a07156911132e0e71bffed0510d/tensorflow_estimator-1.14.0-py2.py3-none-any.whl
Requirement already satisfied: numpy<2.0,>=1.14.5 in c:\programdata\anaconda3\lib\site-packages (from tensorflow-gpu==1.14) (1.17.4)
Requirement already satisfied: gast>=0.2.0 in c:\programdata\anaconda3\lib\site-packages (from tensorflow-gpu==1.14) (0.2.2)
Requirement already satisfied: grpcio>=1.8.6 in c:\programdata\anaconda3\lib\site-packages (from tensorflow-gpu==1.14) (1.24.1)
Requirement already satisfied: markdown>=2.6.8 in c:\programdata\anaconda3\lib\site-packages (from tensorboard<1.15.0,>=1.14.0->tensorflow-gpu==1.14) (3.1.1)
Requirement already satisfied: setuptools>=41.0.0 in c:\programdata\anaconda3\lib\site-packages (from tensorboard<1.15.0,>=1.14.0->tensorflow-gpu==1.14) (44.0.0.post20200106)
Requirement already satisfied: werkzeug>=0.11.15 in c:\programdata\anaconda3\lib\site-packages (from tensorboard<1.15.0,>=1.14.0->tensorflow-gpu==1.14) (0.16.0)
Requirement already satisfied: h5py in c:\programdata\anaconda3\lib\site-packages (from keras-applications>=1.0.6->tensorflow-gpu==1.14) (2.9.0)
ERROR: tensorflow 2.1.0 has requirement tensorboard<2.2.0,>=2.1.0, but you'll have tensorboard 1.14.0 which is incompatible.
ERROR: tensorflow 2.1.0 has requirement tensorflow-estimator<2.2.0,>=2.1.0rc0, but you'll have tensorflow-estimator 1.14.0 which is incompatible.
ERROR: rasa 1.9.4 has requirement tensorflow-estimator==2.1.0, but you'll have tensorflow-estimator 1.14.0 which is incompatible.
Installing collected packages: tensorboard, tensorflow-estimator, tensorflow-gpu
  WARNING: The script tensorboard.exe is installed in 'C:\Users\antoi\AppData\Roaming\Python\Python37\Scripts' which is not on PATH.
  Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
  WARNING: The scripts freeze_graph.exe, saved_model_cli.exe, tensorboard.exe, tf_upgrade_v2.exe, tflite_convert.exe, toco.exe and toco_from_protos.exe are installed in 'C:\Users\antoi\AppData\Roaming\Python\Python37\Scripts' which is not on PATH.
  Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
Successfully installed tensorboard-1.14.0 tensorflow-estimator-1.14.0 tensorflow-gp

u-1.14.0
WARNING: You are using pip version 19.2.3, however version 20.0.2 is available.
You should consider upgrading via the 'python -m pip install --upgrade pip' command.

它似乎没有安装任何东西:

(base) C:\Users\antoi>python -m pip list | findstr tensorflow
tensorflow                         2.1.0
tensorflow-addons                  0.8.3
tensorflow-estimator               1.14.0
tensorflow-gpu                     1.14.0
tensorflow-hub                     0.7.0
tensorflow-probability             0.7.0
WARNING: You are using pip version 19.2.3, however version 20.0.2 is available.
You should consider upgrading via the 'python -m pip install --upgrade pip' command.

【问题讨论】:

  • 使用tf.keras 而不是keras
  • @jdehesa 这似乎是个好主意,但现在我的 jupyter 内核在实例化模型并调用 model.fit 后稍后崩溃了@

标签: python-3.x tensorflow keras libraries tensorflow2.0


【解决方案1】:

是的,从 TF >= 2.0 开始不存在 tensorflow 贡献。

为了让您的代码正常工作,您必须降级到 tensorflow 1.14,即pip install tensorflow-gpu==1.14。另外,从你从keras导入来看,还需要pip install keras==2.2.4

另外,尝试导入包中的所有内容 tensorflow.keras 而不是普通的 keras

请同时卸载 tensorflow(简单包)。在 tensorflow==2.1 之前,cpu 和 gpu 版本是不同的,这就是为什么你要安装两个不同的 tensorflow 版本。

【讨论】:

  • 感谢您的回答!我试图降级 tensorflow,但似乎 Anaconda 不想这样做。我已经用问题更新了我的问题
  • 我正在更新答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-08-18
  • 2021-07-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-17
相关资源
最近更新 更多