我目前正在一个项目中,尝试创建一个能够对视频中的动作进行分类的机器学习模型。我已经创建了一个脚本,该脚本能够检测视频中的人并根据身体部位的运动生成数据。这将生成具有以下输入形状的4D数组:
(nframe,nperson,nbodyparts,每个身体部位3个坐标)
只有1个视频(2人)的输入形状,持续3秒,以60fps / s的速度拍摄,如下所示: (180,2,25,3)
每个视频的4D数组都保存为numpy文件,因此如果我处理400个视频。我将得到400个numpy文件。
下一步是创建一个keras或tensorflow RNN-LSTM模型,该模型能够训练400个numpy文件并能够使用每个视频的4D数组,但是我真的不知道如何获得这个去工作。我已经在寻找一些解决方案,但是我唯一能做的就是Keras只能使用3D阵列。
非常感谢您的帮助,并希望通过示例代码介绍如何解决此问题。
国王的问候,
答案 0 :(得分:0)
我假设您正在使用el.attachShadow({ mode: "open" })
。 numpy.array
可以将4d数组重塑为3d。可以找到文档here。
示例:
np.resahpe()
然后,您可以在线遵循教程来构建模型。示例教程可以是this。
注意:您提到“ Keras仅能与3D阵列一起使用。”我认为其中一个维度是为import numpy as np
# create a sample 4d array data of shape (10, 2, 25, 3)
data = np.arange(10*2*25*3).reshape((10, 2, 25, 3))
# condense the 4d array to 3d array by explicitly stating the shape.
data_reshaped = data.reshape((10, 2, 75))
# or you can use -1 to ask numpy infer the dimension
data_reshaped2 = data.reshape((10, 2, -1))
# you can also reshape your data into 2d of shape (10, 150)
data_reshaped3 = data.reshape((10, -1))
保留的。因此,我建议您将4d数组转换为2d。