如何处理3D卷积神经网络的数据?

时间:2018-08-07 12:23:30

标签: python conv-neural-network mxnet

我有11*11*21 3D数据的集合,我想使用3D转换卷积进行分类。通过使用批处理大小为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)

1 个答案:

答案 0 :(得分:0)

是的,使用Conv3d需要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)
相关问题