首页 > 解决方案 > keras.Model 中 Input 的附加维度从何而来?

问题描述

当我定义一个模型时:

import tensorflow as tf
from tensorflow.keras import layers
import numpy as np

input_shape = (20,20)
input = tf.keras.Input(shape=input_shape)

nn = layers.Flatten()(input)
nn = layers.Dense(10)(nn)
output = layers.Activation('sigmoid')(nn) 

model = tf.keras.Model(inputs=input, outputs=output)

为什么我需要在我的实际输入中添加另一个维度:

actual_input = np.ones((1,20,20))
prediction = model.predict(actual_input)

为什么我不能这样做actual_input = np.ones((20,20))

编辑:

文档中,它说了一些关于batchsize 的信息。这个batchsize 是否与我的问题有关?如果是这样,当我想用​​我的模型进行预测时,我为什么需要它?谢谢你的帮助。

标签: pythontensorflow

解决方案


Keras( TensorFlow) 中,无法预测单个输入。因此,即使您只有一个示例,您也需要将其添加batch_axis到其中。

实际上,在这种情况下,批处理大小为 1,因此批处理轴。

这就是构建方式TensorFlowKeras构建方式,即使对于单个预测,您也需要添加批处理轴(批处理大小为 1 == 1 个单个示例)。

您可以使用np.expand_dims(input,axis=0)tf.expand_dims(input,axis=0)将您的输入转换为适合预测的格式。


推荐阅读