python - load_model() 缺少 1 个必需的位置参数:“文件路径”
问题描述
一直在关注一些关于 Tensorflow 和 Keras 的指南,python 新手,来自 c++。有一个问题说“load_model() 缺少 1 个必需的位置参数:'filepath'”
这是我的代码:
from keras.datasets import cifar10
import keras.utils as utils
from keras.models import load_model
import numpy as np
labelsArray = ["airplane","automobile","bird","cat","deer","dog","frog","horse","ship","truck"]
(_, _), (testImages, testLabels) = cifar10.load_data()
testImages = testImages.astype('float32') / 255.0
testLabels = utils.to_categorical(testLabels)
model = load_model(filepath='Image_Classifier.h5')
results = model.evaluate(x=testImages, y=testLabels)
print("Train loss:", results[0])
print("Test Accuracy:", results[1])
解决方案
TL;DR修复方法是不将文件路径指定为关键字参数:
model = load_model('Image_Classifier.h5')
更长的解释:
我认为原因是它filepath
被视为位置参数而不是关键字参数(有关这些解释,请参见词汇表parameter
中的条目)。如果您查看函数本身,这会令人困惑,因为签名是:load_model
def load_model(filepath, custom_objects=None, compile=True)
这filepath
是一个位置或关键字参数 - 您可以只在第一个位置传递文件名,也可以按照您所做的和所说的做filepath='Image_Classifier.h5'
。但是,还有一些更复杂的机器。我运行您的代码时收到的错误是
model = load_model(filepath='Image_Classifier.h5')
File "/Users/adam/.miniconda3/envs/tf/lib/python3.7/site-packages/keras/engine/saving.py", line 492, in load_wrapper
return load_function(*args, **kwargs)
TypeError: load_model() missing 1 required positional argument: 'filepath'
请注意,该load_model
函数不是直接调用的,而是通过load_wrapper
带有签名的函数
def load_wrapper(*args, **kwargs)
函数签名允许任意数量的位置参数后跟任意数量的关键字参数。然后,该函数似乎对传入的内容进行了一些处理以查找关键字 args,我的猜测是,如果您作为关键字参数传递,那么即使该函数只期望一件事filepath
,它也没有任何要传递的东西被通过位置。*args
load_model
*args
最终结果filepath
被视为仅位置参数,您必须直接传递该值而不将其指定为关键字参数。
推荐阅读
- wordpress - Woocommerce 运费计算逻辑
- c# - 互操作 Excel .Find() 整体匹配未找到值,部分匹配找到
- maven - 尝试使用 maven 编译 google 闭包编译器时出错
- java - 有没有办法使用 findElements 并将结果限制为前 x 个项目
- c++ - 标识符“hWnd”未定义
- import - 纸浆.pulpTestAll():没有属性'pulpTestAll'
- express - 我的后端站点在浏览器中提供损坏的图像
- sql - 试图将许多 SQL 结果放入一个表中
- c++ - CRTP 模式不会触发完整的模板实例化
- python - 具有匹配列的另一个数据框中的一列的重复值