tf.contrib не существует в tenorflow 2.0. Должен ли я загрузить свою версию tenorflow? - PullRequest
0 голосов
/ 08 апреля 2020

Я пытаюсь создать нейронную сеть с керасом и тензорным потоком. Он дополняет последовательную модель, которая создает некоторые проблемы с некоторыми зависимыми библиотеками.

! 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 не существует в тензорном потоке 2,0 . Что мне делать? Должен ли я скачать свою версию tenorflow? Я использую ноутбук Юпитера в Анаконде. Вот моя версия тензорного потока:

(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])

Изменение версии tenorflow

(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.

1 Ответ

0 голосов
/ 08 апреля 2020

Да, вклад tenorflow не существует, начиная с TF> = 2.0.

Для того, чтобы ваш код работал, вы должны перейти на тензор потока 1.14, то есть pip install tensorflow-gpu==1.14. Кроме того, судя по тому, что вы импортируете из keras, вам также нужно pip install keras==2.2.4

Также попробуйте импортировать все в пакете tensorflow.keras не просто keras.

Пожалуйста также удалите tenorflow (простой пакет). До tenorflow == 2.1 версии cpu и gpu были разными, и поэтому у вас установлены две разные версии tenorflow.

...