Tensorflow keras中三维层的精度误解

Tensorflow keras中三维层的精度误解,tensorflow,machine-learning,keras,Tensorflow,Machine Learning,Keras,我正在使用keras和TF2对具有二进制变量的3D数据进行培训。因此X Y Z表示体素矩阵上的位置,通道表示二进制变量。 我使用二进制交叉熵作为损失,使用sigmoid作为最后一层的激活: Conv3DTranspose( 20, kernel_size=2, strides=2, padding="same", activation="sigmoid" , ), ], ) my_mod

我正在使用keras和TF2对具有二进制变量的3D数据进行培训。因此X Y Z表示体素矩阵上的位置,通道表示二进制变量。
我使用二进制交叉熵作为损失,使用sigmoid作为最后一层的激活:

        Conv3DTranspose(
            20, kernel_size=2, strides=2, padding="same", activation="sigmoid" ,  
        ),
    ],
)

my_model.compile(loss ="binary_crossentropy", optimizer="adam", metrics=[tf.keras.metrics.BinaryAccuracy()]) 
虽然只使用一个样本进行训练以过度拟合模型,但在损失仍在下降的情况下,我得到的精度为1。如果在此阶段停止训练,则生成的体素和二进制变量与训练数据不匹配。然而,如果我让它训练更长的时间,损失会继续减少,并且在某一点上,我的模型会完美地拟合我的数据

我也尝试了正常的精度,但它显示非常低的精度,即使我的模型过拟合完美

此外,我还尝试将二进制变量编码更改为on_hot_编码。它基本上增加了一个通道,当我所有的初始变量都为false时,这个新通道为True。使用这种编码,模型的训练几乎相同,但这一次的准确性似乎是正确的