Python 如何解决时间分布输入形状问题(需要5维)

Python 如何解决时间分布输入形状问题(需要5维),python,keras,valueerror,Python,Keras,Valueerror,我正在尝试创建人类行为识别模型。但当我尝试添加时间分布特性时,我遇到了一个输入形状问题。如何将输入图形从4d转换为5d 我想用每10幅图像来训练我的数据集,以便理解动作 数据集大小=(28000,90,90,1) 下面是错误: ValueError:检查输入时出错:预期时间\u分配\u 8\u输入有5个维度,但得到了具有形状的数组(28000,90,90)我也有同样的问题。我使用的是Tensorflow 2.0 alpha中的Tensorflow.keras。我的输入数据是按以下方式形成的: (

我正在尝试创建人类行为识别模型。但当我尝试添加时间分布特性时,我遇到了一个输入形状问题。如何将输入图形从4d转换为5d

我想用每10幅图像来训练我的数据集,以便理解动作

数据集大小=(28000,90,90,1)

下面是错误:
ValueError:检查输入时出错:预期时间\u分配\u 8\u输入有5个维度,但得到了具有形状的数组(28000,90,90)

我也有同样的问题。我使用的是Tensorflow 2.0 alpha中的Tensorflow.keras。我的输入数据是按以下方式形成的:
(列表,列表,numpy.ndarray,numpy.ndarray,numpy.ndarray)
对应于批记录数、时间步数、img\u宽度、img\u高度、通道数

结果表明,Tensorflow输入形状验证代码实际上忽略了一种情况,即给定记录的输入形状是从包含
numpy数组的
列表构建的,并且
列表
维度被剥离。它确实处理几乎所有其他形式的数据

我在本地修改了Tensorflow库代码来修复它,并报告了修复情况(,我希望在本周修复并提交给TF)

也就是说,我认为如果您将输入数据集更改为一种由
组成的形式(list,numpy.ndarray,numpy.ndarray,numpy.ndarray,numpy.ndarray,numpy.ndarray)
可能会解决您遇到的问题

#define CNN model
cnn = Sequential()
cnn.add(Conv2D(filters=32,kernel_size= 
(5,5),padding="Same",activation="relu",input_shape=(90,90,1)))
cnn.add(MaxPooling2D(pool_size=(2,2)))
cnn.add(Dropout(0.25))

cnn.add(Conv2D(filters=16,kernel_size=(5,5),padding="Same",activation="relu"))
cnn.add(MaxPooling2D(pool_size=(2,2)))
cnn.add(Dropout(0.25))

cnn.add(Conv2D(filters=32,kernel_size=(5,5),padding="Same",activation="relu"))
cnn.add(MaxPooling2D(pool_size=(2,2)))
cnn.add(Dropout(0.25))

cnn.add(Flatten())
cnn.add(Dense(4096, activation="relu"))

#define LSTM model
model = Sequential()
model.add(TimeDistributed(cnn,input_shape=(10,90,90,1)))
model.add(LSTM(10))
model.add(Dense(2, activation="softmax"))

verbose, epochs, batch_size = 0, 25, 64
optimizer=Adam(lr=0.001,beta_1=0.9,beta_2=0.999)
model.compile(optimizer=optimizer,loss="binary_crossentropy",metrics=["accuracy"])
model.fit(x_train, y_train,validation_data=(x_val,y_val), epochs=epochs, batch_size=batch_size)