嗨,我钟爱的社区。 p>
我们如何使用tensorflow嵌入式keras将模型保存到相对文件路径?
Promise<void>
我尝试过:
model.save('/models/model.h5')
似乎都不起作用,我总是以:
'./models/'
'/models/'
'models/'
我不想提供绝对路径,因为它可能会动态更改。
答案 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')