我是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)))
答案 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}}