尝试保存张量流模型时,模块 'h5py' 没有属性 'File'
module 'h5py' has no attribute 'File' when trying to save a tensorflow model
所以我刚刚用 MNIST 数字数据库制作了一个小的 NN,我正在尝试保存它。这是完整的代码:
# Importing Libs
import h5py
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt
from tensorflow import keras
# ---------- PART I: Importing and cleaning Data ----------
# Importing Data
train_data = np.genfromtxt('mnist_train.csv', delimiter=',')[1:]
test_data = np.genfromtxt('mnist_test.csv', delimiter=',')[1:]
train_images = train_data[:, 1:]
train_labels = train_data[:, 0]
test_images = test_data[:, 1:]
test_labels = test_data[:, 0]
class_names = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
train_images = train_images/255
test_images = test_images/255
train_images = train_images.reshape(60000, 28, 28)
test_images = test_images.reshape(10000, 28, 28)
# ---------- PART II: Making the model ----------
layers = [keras.layers.Flatten(input_shape=(28, 28)),
keras.layers.Dense(128, activation='relu'),
keras.layers.Dense(10, activation='softmax')]
model = keras.Sequential(layers)
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
model.fit(train_images, train_labels, epochs=1
model.save("network.h5")
这是追溯:
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-36-0e5ebf05c427> in <module>
1 print('Saving Model...')
----> 2 model.save("network.h5")
~\Downloads\Anaconda\lib\site-packages\tensorflow_core\python\keras\engine\network.py in save(self, filepath, overwrite, include_optimizer, save_format, signatures, options)
1006 """
1007 save.save_model(self, filepath, overwrite, include_optimizer, save_format,
-> 1008 signatures, options)
1009
1010 def save_weights(self, filepath, overwrite=True, save_format=None):
~\Downloads\Anaconda\lib\site-packages\tensorflow_core\python\keras\saving\save.py in save_model(model, filepath, overwrite, include_optimizer, save_format, signatures, options)
97
98 if (save_format == 'h5' or
---> 99 (h5py is not None and isinstance(filepath, h5py.File)) or
100 os.path.splitext(filepath)[1] in _HDF5_EXTENSIONS):
101 # TODO(b/130258301): add utility method for detecting model type.
AttributeError: module 'h5py' has no attribute 'File'
我的版本:
- 张量流:2.1.0
- 喀拉斯:2.2.4-tf
- h5py: 2.10.0
- 蟒蛇:2019.10
如有任何帮助,我们将不胜感激。
尝试 this.Its 工作正常。
from tensorflow.keras.models import load_model
model.save("model.h5")
print("Saved model to disk")
# load model
model = load_model('model.h5')
其实这是库版本不同的问题。我在使用 TensorFlow 时也遇到过同样的问题。从 anaconda 提示符中,您可以检查哪个版本的 h5py 与 TensorFlow 兼容。我试过多次卸载和重新安装,但最后安装了一个兼容版本的h5py,问题就解决了。 Conda提示截图可以查看here.
我在我的环境中解决了这个问题,将 h5py 模块降级到 3.1.0, 在 TensorFlow 2.6 兼容中。
我通过卸载现有的 h5py 解决了这个问题,然后 re-install 使用 conda。
$ conda install h5py
我希望它也对你有用。 :D
所以我刚刚用 MNIST 数字数据库制作了一个小的 NN,我正在尝试保存它。这是完整的代码:
# Importing Libs
import h5py
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt
from tensorflow import keras
# ---------- PART I: Importing and cleaning Data ----------
# Importing Data
train_data = np.genfromtxt('mnist_train.csv', delimiter=',')[1:]
test_data = np.genfromtxt('mnist_test.csv', delimiter=',')[1:]
train_images = train_data[:, 1:]
train_labels = train_data[:, 0]
test_images = test_data[:, 1:]
test_labels = test_data[:, 0]
class_names = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
train_images = train_images/255
test_images = test_images/255
train_images = train_images.reshape(60000, 28, 28)
test_images = test_images.reshape(10000, 28, 28)
# ---------- PART II: Making the model ----------
layers = [keras.layers.Flatten(input_shape=(28, 28)),
keras.layers.Dense(128, activation='relu'),
keras.layers.Dense(10, activation='softmax')]
model = keras.Sequential(layers)
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
model.fit(train_images, train_labels, epochs=1
model.save("network.h5")
这是追溯:
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-36-0e5ebf05c427> in <module>
1 print('Saving Model...')
----> 2 model.save("network.h5")
~\Downloads\Anaconda\lib\site-packages\tensorflow_core\python\keras\engine\network.py in save(self, filepath, overwrite, include_optimizer, save_format, signatures, options)
1006 """
1007 save.save_model(self, filepath, overwrite, include_optimizer, save_format,
-> 1008 signatures, options)
1009
1010 def save_weights(self, filepath, overwrite=True, save_format=None):
~\Downloads\Anaconda\lib\site-packages\tensorflow_core\python\keras\saving\save.py in save_model(model, filepath, overwrite, include_optimizer, save_format, signatures, options)
97
98 if (save_format == 'h5' or
---> 99 (h5py is not None and isinstance(filepath, h5py.File)) or
100 os.path.splitext(filepath)[1] in _HDF5_EXTENSIONS):
101 # TODO(b/130258301): add utility method for detecting model type.
AttributeError: module 'h5py' has no attribute 'File'
我的版本:
- 张量流:2.1.0
- 喀拉斯:2.2.4-tf
- h5py: 2.10.0
- 蟒蛇:2019.10
如有任何帮助,我们将不胜感激。
尝试 this.Its 工作正常。
from tensorflow.keras.models import load_model
model.save("model.h5")
print("Saved model to disk")
# load model
model = load_model('model.h5')
其实这是库版本不同的问题。我在使用 TensorFlow 时也遇到过同样的问题。从 anaconda 提示符中,您可以检查哪个版本的 h5py 与 TensorFlow 兼容。我试过多次卸载和重新安装,但最后安装了一个兼容版本的h5py,问题就解决了。 Conda提示截图可以查看here.
我在我的环境中解决了这个问题,将 h5py 模块降级到 3.1.0, 在 TensorFlow 2.6 兼容中。
我通过卸载现有的 h5py 解决了这个问题,然后 re-install 使用 conda。
$ conda install h5py
我希望它也对你有用。 :D