我使用以下代码加载预训练模型:
import tensorflow as tf
from config import max_letters, language_tags
import numpy as np
# max_letters = 12
# language_tags = 5
network = tf.keras.Sequential()
network.add(tf.keras.layers.Dense(200, input_dim=26*max_letters, activation='sigmoid'))
network.add(tf.keras.layers.Dense(150, activation='sigmoid'))
network.add(tf.keras.layers.Dense(100, activation='sigmoid'))
network.add(tf.keras.layers.Dense(100, activation='sigmoid'))
network.add(tf.keras.layers.Dense(len(language_tags), activation='softmax'))
network.load_weights('weights.hdf5')
network.compile(loss='binary_crossentropy', optimizer='sgd', metrics=['accuracy'])
但是我得到以下错误:
Traceback (most recent call last):
File "C:/Users/loose/PycharmProjects/translate_english_german/python/network_test.py", line 1, in <module>
import tensorflow as tf
File "C:Usersloose.condaenvstflibsite-packagestensorflow__init__.py", line 41, in <module>
from tensorflow.python.tools import module_util as _module_util
File "C:Usersloose.condaenvstflibsite-packagestensorflowpython__init__.py", line 47, in <module>
from tensorflow.python import keras
File "C:Usersloose.condaenvstflibsite-packagestensorflowpythonkeras__init__.py", line 27, in <module>
from tensorflow.python.keras import models
File "C:Usersloose.condaenvstflibsite-packagestensorflowpythonkerasmodels.py", line 26, in <module>
from tensorflow.python.keras.engine import functional
File "C:Usersloose.condaenvstflibsite-packagestensorflowpythonkerasenginefunctional.py", line 38, in <module>
from tensorflow.python.keras.engine import training as training_lib
File "C:Usersloose.condaenvstflibsite-packagestensorflowpythonkerasenginetraining.py", line 53, in <module>
from tensorflow.python.keras.saving import hdf5_format
File "C:Usersloose.condaenvstflibsite-packagestensorflowpythonkerassavinghdf5_format.py", line 41, in <module>
import h5py
File "C:Usersloose.condaenvstflibsite-packagesh5py__init__.py", line 34, in <module>
from . import version
File "C:Usersloose.condaenvstflibsite-packagesh5pyversion.py", line 17, in <module>
from . import h5 as _h5
File "h5pyh5.pyx", line 41, in init h5py.h5
AttributeError: type object 'h5py.h5.H5PYConfig' has no attribute '__reduce_cython__'
我使用Python 3.8和TF 2.5.0。我有一个不同的项目,我加载一个模型与tf.keras.load_model()
而不是tf.keras.Sequential.load_weights()
工作良好。所以TF本身在另一个项目中工作正常。我已经尝试了一堆不同版本的h5py但没有一个奏效。除了重新安装TF(因为让它在RTX 3080上工作绝对是一个痛苦的过程),还有什么主意吗?这是我使用的权重文件。
这是因为您需要安装一些必需的TensorFlow
依赖项来保存HDF5
格式的模型并加载那些HDF5
文件。
尝试使用下面的代码安装h5py
库以支持HDF5
文件::
!pip install pyyaml h5py
或
pip install --upgrade h5py