Keras模型中Dataset.from_generator的ValueError

时间:2020-07-26 21:42:33

标签: tensorflow keras tensorflow-datasets

我是TensorFlow的新手,我正在尝试使用Dataset.from_generator程序将视频加载到模型中,该模型从生成器内部的文件名加载视频。我遇到的问题是这样的:

ValueError: Input 0 of layer sequential is incompatible with the layer: expected ndim=5, found ndim=0. Full shape received: []

我不知道是什么原因造成的。

我的代码如下:

def video_gen():
    inputs = np.array([e.strip().split(" ")[0] for e in label_desc])
    labels = np.array([float(e.strip().split(" ")[1]) for e in label_desc])
    for elem in range(len(inputs)):
            yield (labels[elem], load_video(inputs[elem]))

dataset = tf.data.Dataset.from_generator(
    video_gen, 
    (tf.float32, tf.float32), 
    (tf.TensorShape([]), tf.TensorShape([None]))
)

model = models.Sequential()

# variable length, set height, set width, 3 channels
model.add(layers.Input(shape=(None, 240, 320, 3)))

1 个答案:

答案 0 :(得分:0)

对于视频输入,使用处理 5D 输入的 (32, 10, 128, 128, 3)

考虑一批 32 个视频样本,其中每个样本是 128x128 RGB 图像,采用 channels_last 数据格式,跨越 10 个时间步。批量输入形状为 import tensorflow as tf inputs = tf.keras.Input(shape=(10, 128, 128, 3)) conv_2d_layer = tf.keras.layers.Conv2D(64, (3, 3)) outputs = tf.keras.layers.TimeDistributed(conv_2d_layer)(inputs) 工作示例代码

TensorShape([None, 10, 126, 126, 64])

outputs.shape

{{1}}