如何处理 3d 卷积神经网络的数据?
How to process data for 3d convolutional neural network?
我有一组 11*11*21
3D 数据,我想使用 3D 卷积网络对其进行分类。通过使用批量大小为 64 的 gluon 数据加载器,我的网络输入张量为 (64L, 11L, 11L, 21L)。当我尝试 运行 程序时,出现以下错误。
"infer_shape error. Arguments:
data: (64L, 11L, 11L, 21L)"
然后我意识到 3D 转换将 5D 张量作为输入,因此我陷入了如何为网络创建 5D 张量输入的问题。
如果这对我有帮助,请参考我当前用于为卷积网络创建数据的代码。
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)
是的,使用 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)
我有一组 11*11*21
3D 数据,我想使用 3D 卷积网络对其进行分类。通过使用批量大小为 64 的 gluon 数据加载器,我的网络输入张量为 (64L, 11L, 11L, 21L)。当我尝试 运行 程序时,出现以下错误。
"infer_shape error. Arguments:
data: (64L, 11L, 11L, 21L)"
然后我意识到 3D 转换将 5D 张量作为输入,因此我陷入了如何为网络创建 5D 张量输入的问题。
如果这对我有帮助,请参考我当前用于为卷积网络创建数据的代码。
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)
是的,使用 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)