TF Keras如何在加载模型时获得预期的输入形状?



是否有可能从模型中获得预期的输入形状?h5"文件?我有两个模型相同的数据集,但有不同的选项和形状。第一个模型期望dim值为(None, 64, 48, 1),第二个模型需要输入形状(None, 128, 96, 3)。(注意:宽度或高度不是固定的,当我再次训练时可以改变)。渠道问题很容易"解决"。(或绕过)只是使用try:和除非因为只有两个选项(1灰度图像和3 RGB图像):

channels = self.df["channels"][0]
file = ""
try:
images, src_images, data = self.get_images()
images = self.preprocess_data(images, channels)
predictions, file = self.load_model(images, file)
self.predict_data(src_images, predictions, data)
except:
if channels == 1:
print("Except channels =", channels)
channels = 3
images, src_images, data = self.get_images()
images = self.preprocess_data(images, channels)
predictions = self.load_model(images, file)
self.predict_data(src_images, predictions, data)
else:
channels = 1
print("Except channels =", channels)
images, src_images, data = self.get_images()
images = self.preprocess_data(images, channels)
predictions = self.load_model(images, file)
self.predict_data(src_images, predictions, data)

这个解决方法不能用于图像的宽度和高度,因为基本上有无限的选项。此外,它相当慢,因为我读取所有的数据两次,预处理它两次无缘无故。

是否有加载模型的方法。H5文件并以这样的形式打印预期的输入形状?:

[None, 128, 96, 3]

我终于自己找到了答案。

config = model.get_config() # Returns pretty much every information about your model
print(config["layers"][0]["config"]["batch_input_shape"]) # returns a tuple of width, height and channels

这将输出如下内容:

(None, 128, 96, 3)

我发现这里的答案更简洁:

model.layers[0].input_shape[0]

我的理解是,这样处理多个输入也应该更容易。

最新更新