我的 CNN 预测一切为零

数据挖掘 张量流 美国有线电视新闻网
2022-02-24 07:10:49

我有大约 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')

我两次、三次检查输入是否正确,但我的模型总是将所有内容预测为零。

是因为我的张量或标签大多为零值吗?还是我的数据太少?

0个回答
没有发现任何回复~