keras 与 tensorflow 版本对应关系:https://master–floydhub-docs.netlify.app/guides/environments/
本文版本为: tensorflow 2.2.0 + keras 2.3.0 + python3.7
版本对应一定要与链接中的表格描述一致,否则很容易报错
可以依次执行以下指令:
conda 中修改 python 版本命令:conda install python=3.7;或者新建一个 conda 环境 conda create -n keras python=3.7,这两个命令二选一执行即可。
pip install keras==2.3.0
pip install tensorflow==2.2.0
在执行 import keras 命令时出现如下错误:
(keras) work@instance-cli0crch:~/xxxxxx/MatchZoo-master$ python Python 3.7.13 (default, Mar 29 2022, 02:18:16) [GCC 7.5.0] :: Anaconda, Inc. on linux Type "help", "copyright", "credits" or "license" for more information. >>> import keras Using TensorFlow backend. Traceback (most recent call last): File "问题解决", line 1, in File "/home/work/anaconda3/envs/keras/lib/python3.7/site-packages/keras/__init__.py", line 3, in from . import utils File "/home/work/anaconda3/envs/keras/lib/python3.7/site-packages/keras/utils/__init__.py", line 6, in from . import conv_utils File "/home/work/anaconda3/envs/keras/lib/python3.7/site-packages/keras/utils/conv_utils.py", line 9, in from .. import backend as K File "/home/work/anaconda3/envs/keras/lib/python3.7/site-packages/keras/backend/__init__.py", line 1, in from .load_backend import epsilon File "/home/work/anaconda3/envs/keras/lib/python3.7/site-packages/keras/backend/load_backend.py", line 90, in from .tensorflow_backend import * File "/home/work/anaconda3/envs/keras/lib/python3.7/site-packages/keras/backend/tensorflow_backend.py", line 5, in import tensorflow as tf File "/home/work/anaconda3/envs/keras/lib/python3.7/site-packages/tensorflow/__init__.py", line 41, in from tensorflow.python.tools import module_util as _module_util File "/home/work/anaconda3/envs/keras/lib/python3.7/site-packages/tensorflow/python/__init__.py", line 53, in from tensorflow.core.framework.graph_pb2 import * File "/home/work/anaconda3/envs/keras/lib/python3.7/site-packages/tensorflow/core/framework/graph_pb2.py", line 16, in from tensorflow.core.framework import function_pb2 as tensorflow_dot_core_dot_framework_dot_function__pb2 File "/home/work/anaconda3/envs/keras/lib/python3.7/site-packages/tensorflow/core/framework/function_pb2.py", line 16, in from tensorflow.core.framework import attr_value_pb2 as tensorflow_dot_core_dot_framework_dot_attr__value__pb2 File "/home/work/anaconda3/envs/keras/lib/python3.7/site-packages/tensorflow/core/framework/attr_value_pb2.py", line 16, in from tensorflow.core.framework import tensor_pb2 as tensorflow_dot_core_dot_framework_dot_tensor__pb2 File "/home/work/anaconda3/envs/keras/lib/python3.7/site-packages/tensorflow/core/framework/tensor_pb2.py", line 16, in from tensorflow.core.framework import resource_handle_pb2 as tensorflow_dot_core_dot_framework_dot_resource__handle__pb2 File "/home/work/anaconda3/envs/keras/lib/python3.7/site-packages/tensorflow/core/framework/resource_handle_pb2.py", line 16, in from tensorflow.core.framework import tensor_shape_pb2 as tensorflow_dot_core_dot_framework_dot_tensor__shape__pb2 File "/home/work/anaconda3/envs/keras/lib/python3.7/site-packages/tensorflow/core/framework/tensor_shape_pb2.py", line 42, in serialized_options=None, file=DESCRIPTOR), File "/home/work/anaconda3/envs/keras/lib/python3.7/site-packages/google/protobuf/descriptor.py", line 560, in __new__ _message.Message._CheckCalledFromGeneratedFile() TypeError: Descriptors cannot not be created directly. If this call came from a _pb2.py file, your generated code is out of date and must be regenerated with protoc >= 3.19.0. If you cannot immediately regenerate your protos, some other possible workarounds are: 1. Downgrade the protobuf package to 3.20.x or lower. 2. Set PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python (but this will use pure-Python parsing and will be much slower).
pip install protobuf~=3.19.0解决成功
然后重新执行 import keras 无错误:
(keras) work@instance-cli0crch:~/xxxxxx/MatchZoo-master$ python Python 3.7.13 (default, Mar 29 2022, 02:18:16) [GCC 7.5.0] :: Anaconda, Inc. on linux Type "help", "copyright", "credits" or "license" for more information. >>> import keras Using TensorFlow backend. >>> import tensorflow



