Neural network 为什么真阳性-假阴性分布总是相同的

Neural network 为什么真阳性-假阴性分布总是相同的,neural-network,pytorch,conv-neural-network,Neural Network,Pytorch,Conv Neural Network,我有一个神经网络,我用它进行二元分类。我改变训练数据的大小,并在测试集上进行预测。从结果来看,tp和fn之间的差异总是相同的,tn和fp之间的差异总是相同的。例如,在迭代#2中,tp#2-tp#1=-91和fn#2-fn#1=+91。另外,fp#2-fp#1=-46和tn#2-tn#1=+46。另一个例子是,tp#3-tp#2=-35和fn#2-fn#2=+35 Iteration #1 tn=119, fp=173, fn=110, tp=407 Iteration #2 tn=165, fp

我有一个神经网络,我用它进行二元分类。我改变训练数据的大小,并在测试集上进行预测。从结果来看,
tp
fn
之间的差异总是相同的,
tn
fp
之间的差异总是相同的。例如,在迭代#2中,
tp#2-tp#1=-91
fn#2-fn#1=+91
。另外,
fp#2-fp#1=-46
tn#2-tn#1=+46
。另一个例子是,
tp#3-tp#2=-35
fn#2-fn#2=+35

Iteration #1
tn=119, fp=173, fn=110, tp=407
Iteration #2
tn=165, fp=127, fn=201, tp=316
Iteration #3
tn=176, fp=116, fn=236, tp=281
Iteration #4
tn=157, fp=135, fn=207, tp=310
Iteration #5
tn=155, fp=137, fn=214, tp=303
我尝试过各种神经网络结构,但我总是得到相同的数字。你知道怎么回事吗

以下是我使用的一个非常简单的网络:

类所有CNN(nn.模块):
定义初始大小(自、语音大小、嵌入大小):
手电筒。手动种子(0)
超级(所有CNN,自我)。\uuuu初始化
self.word\u embeddings=nn.Embedding(声音大小,嵌入大小)
self.conv1=nn.Conv1d(嵌入大小,64,3)
self.drop1=nn.Dropout(0.3)
self.max_pool1=nn.MaxPool1d(2)
self.flat1=nn.flatte()
self.fc1=nn.线性(64*80100)
self.fc2=nn.线性(100,1)
def转发(自我,句子):
嵌入=self.word\u嵌入(句子).permute(0,2,1)
conv1=F.relu(self.conv1(嵌入))
drop1=自.drop1(conv1)
max_pool1=self.max_pool1(drop1)
flat1=自flat1(最大值为1)
fc1=F.relu(自fc1(平面1))
fc2=火炬乙状体(自身fc2(fc1))
返回fc2

我认为应该是一样的。
tn(真负值)和fp(假正值)之和等于“真”负值的总和,其他两个值也是如此。 因此,只要您使用相同的数据

tn + fp = 292(total negative values)
fn + tp = 517(total positive values)
这些方程式总是正确的。 所以
tn#1+fp#1=tn#2+fp#2
So
tn#1-tn#2=fp#2-fp#1