Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在Colab OSError消息中保存并加载keras tensorflow模型_Python_Tensorflow_Keras_Google Colaboratory - Fatal编程技术网

Python 在Colab OSError消息中保存并加载keras tensorflow模型

Python 在Colab OSError消息中保存并加载keras tensorflow模型,python,tensorflow,keras,google-colaboratory,Python,Tensorflow,Keras,Google Colaboratory,我想运行/拟合模型,保存该模型,然后加载它。我想利用这个格式,保存整个模型,并有一个解决方案。这不是HDF5格式,也不是.h5格式,但事实证明,即使使用.h5,它也不起作用(请参阅下面的回答/评论)。我在Colab工作。我的代码如下: import tensorflow as tf from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense, Conv2D, Flatten,

我想运行/拟合模型,保存该模型,然后加载它。我想利用这个格式,保存整个模型,并有一个解决方案。这不是HDF5格式,也不是.h5格式,但事实证明,即使使用.h5,它也不起作用(请参阅下面的回答/评论)。我在Colab工作。我的代码如下:

import tensorflow as tf

from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Conv2D, Flatten, Dropout, MaxPooling2D
from tensorflow.keras.preprocessing.image import ImageDataGenerator

import os
import numpy as np
import matplotlib.pyplot as plt
from tensorflow.python.keras.utils.version_utils import training
from tensorflow.keras.optimizers import RMSprop

_URL = 'https://storage.googleapis.com/mledu-datasets/cats_and_dogs_filtered.zip'

path_to_zip = tf.keras.utils.get_file('cats_and_dogs.zip', origin=_URL, extract=True, cache_subdir = '/tmp/catsdogs')

PATH = os.path.join(os.path.dirname(path_to_zip), 'cats_and_dogs_filtered')

training_dir = os.path.join(PATH, 'train')
validation_dir = os.path.join(PATH, 'validation')


train_image_generator = ImageDataGenerator(rescale=1./255)
validation_image_generator = ImageDataGenerator(rescale=1./255)

train_datagen = train_image_generator.flow_from_directory(
  directory=training_dir,
  target_size=(300, 300),
  shuffle=True,
  batch_size=128,
  class_mode='binary'
)

val_datagen = validation_image_generator.flow_from_directory(
  directory=validation_dir,
  target_size=(300, 300),
  batch_size=128,
  class_mode='binary'
)

model = Sequential([
    Conv2D(16, 3, padding = 'same', activation='relu', input_shape=(300, 300 ,3)),
    MaxPooling2D(),
    Conv2D(32, 3, padding = 'same', activation='relu'),
    MaxPooling2D(),
    Conv2D(64, 3, padding = 'same', activation='relu'),
    MaxPooling2D(),
    Dropout(0.2),
    Flatten(),
    Dense(512, activation='relu'),
    Dense(1)
])

model.compile(optimizer='Adam', loss=tf.keras.losses.BinaryCrossentropy(from_logits=True), metrics=['acc'])

model.summary()

history = model.fit(train_datagen,validation_data=val_datagen,epochs=1)
现在我要保存此模型并加载它:

model.save('saved_model')

from keras.models import load_model
modeldownload = load_model('saved_model')
但是,这不起作用(同样的问题,当我将来自keras models import load\u model的
直接放在其他导入的起始位置时)。我收到以下错误消息:

OSError: Unable to open file
全文:

---------------------------------------------------------------------------

OSError                                   Traceback (most recent call last)

<ipython-input-24-1b29d8169144> in <module>()
      1 model.save('saved_model')
----> 2 modeldownload = load_model('saved_model')

4 frames

/usr/local/lib/python3.6/dist-packages/h5py/_hl/files.py in make_fid(name, mode, userblock_size, fapl, fcpl, swmr)
    171         if swmr and swmr_support:
    172             flags |= h5f.ACC_SWMR_READ
--> 173         fid = h5f.open(name, flags, fapl=fapl)
    174     elif mode == 'r+':
    175         fid = h5f.open(name, h5f.ACC_RDWR, fapl=fapl)

h5py/_objects.pyx in h5py._objects.with_phil.wrapper()

h5py/_objects.pyx in h5py._objects.with_phil.wrapper()

h5py/h5f.pyx in h5py.h5f.open()

OSError: Unable to open file (file read failed: time = Wed Jul  8 11:17:03 2020
, filename = 'saved_model', file descriptor = 62, errno = 21, error message = 'Is a directory', buf = 0x7fff87aca540, total read size = 8, bytes this sub-read = 8, bytes actually read = 18446744073709551615, offset = 0)
---------------------------------------------------------------------------
OSError回溯(最近一次调用上次)
在()
1 model.save('saved_model')
---->2模型下载=加载模型(“保存的模型”)
4帧
/make\u fid中的usr/local/lib/python3.6/dist-packages/h5py//u hl/files.py(名称、模式、用户块大小、fapl、fcpl、swmr)
171如果swmr和swmr_支持:
172个标志|=h5f.ACC_SWMR_读取
-->173 fid=h5f.打开(名称、标志、fapl=fapl)
174 elif模式=='r+':
175 fid=h5f.开启(名称,h5f.ACC_RDWR,fapl=fapl)
h5py.\u objects.with\u phil.wrapper()中的h5py/\u objects.pyx
h5py.\u objects.with\u phil.wrapper()中的h5py/\u objects.pyx
h5py.h5f.open()中的h5py/h5f.pyx
OSError:无法打开文件(文件读取失败:时间=Wed Jul 8 11:17:03 2020
,filename='saved_model',file descriptor=62,errno=21,错误消息='Is a directory',buf=0x7fff87aca540,总读取大小=8,此子读取的字节数=8,实际读取的字节数=18446744073709551615,偏移量=0)
我试着和我们一起玩,使用不同的文件夹、子目录等等。但我没有让它工作。如何正确地做?我还尝试了
model.fit(train\u datagen,validation\u data=val\u datagen,epochs=1)
,因此没有
history=
,但有相同的错误消息。

试试这个

model.save('modelname.h5') 
然后使用

from keras.models import load_model  

modeldownload = load_model('modelname.h5')

我得到一个错误“ValueError:Unknown initializer:GlorotUniform”。此外,我想利用SavedModel格式,而不是HDF5格式.model.save('modelname.h5',overwrite=True,include\u optimizer=True,save\u format=None,signatures=None,options=None)试试这个你正在使用tf.keras保存模型,然后使用keras加载它,它不是同一个库,所以这不起作用,为此,您需要使用tf.keras.models.load\u model