java帧结构,使用视频训练LSTM模型的结构(帧数恒定)

从documentation,我们可以看到所有Keras复现层所期望的输入形状是:

(None, TimeSteps, DataDimension)

在Keras形状中, None 是您拥有的示例数 .

因此,在第一种简单的方法中,您必须将您的训练数据塑造为:

(NumberOfVideos, NumberOfFrames, height * width * channels)

你的第一层(如果第一层是LSTM)应该使用:

LSTM(AnyNumberOfCells, input_shape=(NumberOfFrames, height * width * channels))

创建模型时从不考虑批量大小(示例数量),它只出现在您的训练数据中,这就是为什么Keras在消息中为该维度显示 None 的原因 .

现在,这是一种非常简单直观的启动方式,但实际上,没有义务像这样塑造您的训练数据,您可以尝试各种方式,只要您为LSTM图层保留数据形状为 (BatchSize,TimeSteps,DataDimension) . 一个很好的方法(在我看来)是首先做一些卷积来减少数据大小,然后再在LSTM中提供它 . 维度"height * width * channels"可能太多,无法在LSTM层中一次处理所有内容,并且可能会导致内存问题 .

如果你有记忆问题 . 你可以学习"generators"或Keras Sequences . 这些将与fit_generator()方法一起使用 . Keras将首先使用生成器读取有限数量的数据,并仅使用该数据进行训练 . 但是,您必须使这些发生器以相同的格式输出 (ASmallerNumberOfVideos, NumberOfFrames, height * width * channels) .

现在,即使这样你还有内存问题,你将不得不开始使用 stateful=True 层 .

在这种情况下,“TimeSteps”可以在不同的阵列中分开 . 当你训练时,你的LSTM层不会认为“好,这个例子已经完成” . 您输入的下一批将被视为“继续前一个序列” .

数据形状像 (NumberOfVideos,ReducedNumberOfFrames, h*w) .

在这种情况下,每次训练足够"ReducedNumberOfFrames"完成序列后,您必须使用.reset_states()手动重置网络状态 .

你可以通过像 (ReducedNumberOfVideos,ReducedNumberOfFrames,h*w) 这样的训练来结合这两个想法,只要你能够很好地控制你的训练并在正确的点上进行训练 .

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用GPU训练LSTM模型需要安装CUDA和cuDNN,这是NVIDIA提供的用于GPU加速的工具。安装后,您可以使用深度学习框架(如TensorFlow或PyTorch)来编写LSTM模型,并将其配置为在GPU上进行训练。 以下是使用TensorFlow在GPU上训练LSTM模型的简单步骤: 1. 安装CUDA和cuDNN。 2. 安装TensorFlow并确保它可以访问GPU。您可以使用以下命令验证: ``` import tensorflow as tf tf.test.is_gpu_available() ``` 3. 加载据集并准备据。这通常涉及将据转换为张量,并将其拆分为训练集和测试集。 4. 构建LSTM模型。您可以使用TensorFlow中的 `tf.keras.layers.LSTM` 层来构建模型。 5. 编译模型并指定优化器和损失函。 6. 调用 `model.fit()` 函训练模型,将 `epochs` 参设置为所需的训练。 以下是一个简单的示例代码,演示了如何使用TensorFlow在GPU上训练LSTM模型: ``` import tensorflow as tf from tensorflow.keras.layers import LSTM, Dense # 加载据集并准备据 # ... # 构建模型 model = tf.keras.Sequential([ LSTM(64, input_shape=(None, input_dim)), Dense(output_dim, activation='softmax') ]) # 编译模型 model.compile(optimizer='adam', loss='categorical_crossentropy') # 在GPU上训练模型 with tf.device('/GPU:0'): model.fit(x_train, y_train, epochs=10, batch_size=32) ``` 请注意,训练LSTM模型需要大量的计算资源和时间。使用GPU可以显著加速训练过程,但仍需要耐心等待模型训练完成。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值