首页 > 解决方案 > ImportError:无法从“tensorflow.python.keras.layers.normalization”不匹配版本中导入名称“LayerNormalization”修复?

问题描述

没有在 stackoverflow 和 tensorflow 上发布太多内容。我按照本教程介绍了如何安装 tensorflow 以在 jupyter 笔记本上使用(https://github.com/jeffheaton/t81_558_deep_learning/blob/master/install/tensorflow-install-mac-jan-2021.ipynb)。

在测试环境时,我得到 Python 3.8.11、Tensor Flow 2.5.1 和 Keras 2.5.0

我试图运行的代码:

import pandas as pd
import numpy as np
import tensorflow as tf
import re
from nltk.corpus import stopwords
from sklearn.model_selection import train_test_split
from sklearn.metrics import median_absolute_error as mae
from sklearn.metrics import mean_squared_error as mse
from sklearn.metrics import accuracy_score as acc
import matplotlib.pyplot as plt

from keras.models import Sequential
from keras import initializers
from keras.layers import Dropout, Activation, Embedding, Convolution1D, MaxPooling1D, Input, Dense, Merge, \
                         BatchNormalization, Flatten, Reshape, Concatenate
from keras.layers.recurrent import LSTM, GRU
from keras.callbacks import Callback, ModelCheckpoint, EarlyStopping, ReduceLROnPlateau
from keras.models import Model
from keras.optimizers import Adam, SGD, RMSprop
from keras import regularizers

我得到的错误是

ImportError                               Traceback (most recent call last)
<ipython-input-4-3a64b96c6d78> in <module>
     10 import matplotlib.pyplot as plt
     11 
---> 12 from keras.models import Sequential
     13 from keras import initializers
     14 from keras.layers import Dropout, Activation, Embedding, Convolution1D, MaxPooling1D, Input, Dense, Merge, \

/opt/miniconda3/envs/tensorflow/lib/python3.8/site-packages/keras/__init__.py in <module>
     23 
     24 # See b/110718070#comment18 for more details about this import.
---> 25 from keras import models
     26 
     27 from keras.engine.input_layer import Input

/opt/miniconda3/envs/tensorflow/lib/python3.8/site-packages/keras/models.py in <module>
     18 import tensorflow.compat.v2 as tf
     19 from keras import backend
---> 20 from keras import metrics as metrics_module
     21 from keras import optimizer_v1
     22 from keras.engine import functional

/opt/miniconda3/envs/tensorflow/lib/python3.8/site-packages/keras/metrics.py in <module>
     25 
     26 import numpy as np
---> 27 from keras import activations
     28 from keras import backend
     29 from keras.engine import base_layer

/opt/miniconda3/envs/tensorflow/lib/python3.8/site-packages/keras/activations.py in <module>
     18 
     19 from keras import backend
---> 20 from keras.layers import advanced_activations
     21 from keras.utils.generic_utils import deserialize_keras_object
     22 from keras.utils.generic_utils import serialize_keras_object

/opt/miniconda3/envs/tensorflow/lib/python3.8/site-packages/keras/layers/__init__.py in <module>
    146 
    147 # Normalization layers.
--> 148 from keras.layers.normalization import LayerNormalization
    149 from keras.layers.normalization_v2 import SyncBatchNormalization
    150 

ImportError: cannot import name 'LayerNormalization' from 'keras.layers.normalization' (/opt/miniconda3/envs/tensorflow/lib/python3.8/site-packages/keras/layers/normalization/__init__.py)

我知道有关于不匹配版本的帖子是这不起作用的原因,但不确定我将如何独立更改 tensorflow 等的版本以使其工作。

标签: pythontensorflowkeras

解决方案


使用 Tensorflow 2.5 和 Keras 2.4.3 再试一次。

提供要点供参考


推荐阅读