如何将训练数据集帧转换为 5d 张量,同时保持帧维度标签?

我使用 image_dataset_from_directory() 创建我的训练(529003 帧)、验证(29388 帧)和测试(28875 帧)数据:



train_dataset = image_dataset_from_directory(

    directory=TRAIN_DIR,

    labels="inferred",

    label_mode="categorical",

    class_names=["0", "10", "5"],

    batch_size=32,

    image_size=SIZE,

    seed=SEED,

    subset=None,

    interpolation="bilinear",

    follow_links=False,

)


#Shape of the data

(TensorSpec(shape=(None, 224, 224, 3), dtype=tf.float32, name=None),

 TensorSpec(shape=(None, 3), dtype=tf.float32, name=None))

我使用的模型需要 5D 张量 (32,5,224,224,3) 形式的数据,我使用 MobileNet 进行迁移学习,然后使用 LSTM 进行视频分类。


我尝试过使用:


train_dataset = train_dataset.batch(5).batch(32)

但是数据集变成了 6D 并且标签的维度也增加了


(TensorSpec(shape=(None, None, None, 224, 224, 3), dtype=tf.float32, name=None),

 TensorSpec(shape=(None, None, None, 3), dtype=tf.float32, name=None))


慕运维8079593
浏览 114回答 1
1回答

UYOU

我找到了制作一个自定义生成器所需的解决方案,该生成器从视频输入生成 5D 张量,该生成器将序列长度视为 5D 张量的第五个元素。我使用 Keras 的 image_dataset_from_directory() 生成 4D 张量。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python