我有大约 4000 张带有 0、1、2 个标签的 3D 图像。70% 的标签是零。每张图像的尺寸为 [40, 30, 30] 值通常在 -50 到 50 之间,每张图像的大约 10% 具有非零值(大于 10^-4)。
下面是我的 3D CNN 模型,它有 3 个池化层和 3 个全连接层。
self.conv1 = conv3d(self.X, 10, 1, 32, name='conv1')
self.norm1 = tf.contrib.layers.batch_norm(self.conv1, center=True, scale=True, scope='bn1')
self.pool1 = max_pool(self.norm1, 3, 2, name='pool1')
self.conv2 = conv3d(self.pool1,8,1,64, name='conv2')
self.norm2 = tf.contrib.layers.batch_norm(self.conv2, center=True, scale=True, scope='bn2')
self.pool2 = max_pool(self.norm2, 3, 2, name='pool2')
self.conv3 = conv3d(self.pool2,8,1,64, name='conv3')
self.pool3 = max_pool(self.conv3, 3, 2, name='pool3')
proddim = np.prod(self.pool3.get_shape()[1:], dtype=np.uint)
self.flat = tf.reshape(self.pool3, [-1,proddim ])
self.fc4 = fc(self.flat, num_output=1024, name='fc4')
self.dropout4 = tf.layers.dropout(inputs=self.fc4, rate=0.2, training=self.dropout_train, name='dropout4')
self.fc5 = fc(self.dropout4, num_output=384, name='fc5')
self.dropout5 = tf.layers.dropout(inputs=self.fc5, rate=0.2, training=self.dropout_train, name='dropout5')
self.fc6 = fc(self.dropout5, num_output=3, name='fc6')
我两次、三次检查输入是否正确,但我的模型总是将所有内容预测为零。
是因为我的张量或标签大多为零值吗?还是我的数据太少?