通过相对路径保存H5模型-Keras TensorFlow

时间:2019-07-04 13:27:39

标签: python python-3.x tensorflow keras

嗨,我钟爱的社区。

我们如何使用tensorflow嵌入式keras将模型保存到相对文件路径?

Promise<void>

我尝试过:

    model.save('/models/model.h5')

似乎都不起作用,我总是以:

'./models/'
'/models/'
'models/'

我不想提供绝对路径,因为它可能会动态更改。

3 个答案:

答案 0 :(得分:0)

该错误可能与以下原因之一有关:

  • 指定的文件夹是否存在?如果不存在,则应使用:

    import os
    os.makedirs('models/')          # Creating a directory
    model.save('models/model.h5')   # Saving model
    
  • 您是否有权写入该文件夹?如果您使用的是基于Unix的系统(即Mac OS或Linux),则可以通过以下方式进行检查:

    ls -l models/
    

    可以找到here有关Unix文件权限的友好教程。

  • 您的路径是否包含特殊符号?(即用户文件夹的~),您将需要使用os.path.expanduser来解析路径。

答案 1 :(得分:0)

除了@FalconUA提到的内容外,我在这里提供一个示例,将tensorflow.keras模型保存到当前目录下的model_path文件夹中。这与最新的张量流(TF2.0.0rc2)配合良好。

import tensorflow as tf
from tensorflow import keras
mnist = tf.keras.datasets.mnist

#import data
(x_train, y_train),(x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0

# create a model
def create_model():
  model = tf.keras.models.Sequential([
    tf.keras.layers.Flatten(input_shape=(28, 28)),
    tf.keras.layers.Dense(512, activation=tf.nn.relu),
    tf.keras.layers.Dropout(0.2),
    tf.keras.layers.Dense(10, activation=tf.nn.softmax)
    ])
# compile the model
  model.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])
  return model

# Create a basic model instance
model=create_model()

model.fit(x_train, y_train, epochs=1)
loss, acc = model.evaluate(x_test, y_test,verbose=1)
print("Original model, accuracy: {:5.2f}%".format(100*acc))

# Save entire model to a HDF5 file
model.save('./model_path/my_model.h5')

# Recreate the exact same model, including weights and optimizer.
new_model = keras.models.load_model('./model_path/my_model.h5')
loss, acc = new_model.evaluate(x_test, y_test)
print("Restored model, accuracy: {:5.2f}%".format(100*acc))

答案 2 :(得分:0)

这是一个响应问题的函数的简单示例。如果该文件夹不存在,请使用现有文件夹创建一个新文件夹。

def save_model(path, model):
    if not os.path.exists(path):
        print('save directories...', flush=True)
        os.makedirs(path)
    model.save(path + '/handrecognition_model.h5')