Python 如何处理三维卷积神经网络的数据?

Python 如何处理三维卷积神经网络的数据?,python,conv-neural-network,mxnet,Python,Conv Neural Network,Mxnet,我有一个11*11*213D数据的集合,我想使用3D convnet进行分类。通过使用批量大小为64的gluon数据加载器,我的网络输入张量为(64L、11L、11L、21L)。当我试图运行该程序时,出现了以下错误 "infer_shape error. Arguments: data: (64L, 11L, 11L, 21L)" 然后我意识到3D转换将5D张量作为输入,因此我一直在研究如何为网络创建5D张量输入 如果有帮助的话,这里是我当前用于为convnet创建数据的代码 train_da

我有一个
11*11*21
3D数据的集合,我想使用3D convnet进行分类。通过使用批量大小为64的gluon数据加载器,我的网络输入张量为(64L、11L、11L、21L)。当我试图运行该程序时,出现了以下错误

"infer_shape error. Arguments:
data: (64L, 11L, 11L, 21L)"
然后我意识到3D转换将5D张量作为输入,因此我一直在研究如何为网络创建5D张量输入

如果有帮助的话,这里是我当前用于为convnet创建数据的代码

train_dataset = mx.gluon.data.ArrayDataset((noA_list+A_list),     (label_noA+label_A))
test_dataset = mx.gluon.data.ArrayDataset((noA_test_list+A_list_test),(label_noA_test+label_A_test))
train_data = mx.gluon.data.DataLoader(train_dataset, batch_size= 64,shuffle= True, num_workers = cpucount)
test_data = mx.gluon.data.DataLoader(test_dataset,batch_size= 64,shuffle= True, num_workers = cpucount)

是的,你需要使用5维张量。默认情况下,张量格式应为
NCDHW
,其中:

“N”-批量大小, "C"频道,, “H”-高度 “W”-宽度 “D”-深度

卷积应用于“D”、“H”和“W”维

因此,如果缺少通道维度(并且正在处理灰度数据),可以创建此维度:

# a.shape is (64, 11, 11, 21)
a = mx.nd.random.uniform(shape=(64, 11, 11, 21))
# adding 'channel' dimension
a.expand_dims(1)
# new a.shape is (64, 1, 11, 11, 21)

我运行了你的代码,a.shape看起来仍然是(64L,11L,11L,21L),我可能做错了什么吗?哦,抱歉搞混了。当然,
a
不会改变,它是具有适当维度的函数的结果。因此,只需将上次执行的结果分配给一个新变量,如
b=a.expand_dims(1)
或重用
a
a=a.expand_dims(1)