pytorch 两个不同的数据输入网络中却又相同的输出

我写了一个autoencoder框架的网络,里面是lstm构成。但我再测试的时候发现,将两个完全不同的数据放进网络中,得到的输出确实几乎完全一样的。这个问题困扰了我好久也没能得到解决。代码如下:

class encoder_lstm(nn.Module):
    def __init__(self):
        super(encoder_lstm, self).__init__()
        self.encoder1=nn.LSTM(1,64,batch_first=True)
        self.encoder2=nn.LSTM(64,16,batch_first=True)
    def forward(self,input):
        encoder,(_,_)=self.encoder1(input)
        encoder=F.relu(encoder)
        encoder,(_,_)=self.encoder2(encoder)
        encoder=F.relu(encoder)
        return encoder
class decoder_lstm(nn.Module):
    def __init__(self):
        super(decoder_lstm, self).__init__()
        self.decoder1=nn.LSTM(16,64,batch_first=True)
        self.decoder2=nn.LSTM(64,128,batch_first=True)
        self.liner=nn.Linear(128,1)
        self.encoder=encoder_lstm()
    def forward(self,input):
        output=self.encoder(input)
        output, (_,_)=self.decoder1(output)
        output=F.relu(output)
        output,(_,_)=self.decoder2(output)
        output=F.relu(output)
        output=self.liner(output)
        return output
model=decoder_lstm().cuda()
x=torch.randn(64,28,1,dtype=torch.float32).cuda()
y=torch.randn(64,28,1,dtype=torch.float32).cuda()
x=model(x)
y=model(y)
print(x)
print('-'*100)
print(y)


输出:

tensor([[[-0.0555],
         [-0.0537],
         [-0.0523],
         ...,
         [-0.0540],
         [-0.0540],
         [-0.0539]],

        [[-0.0555],
         [-0.0537],
         [-0.0523],
         ...,
         [-0.0539],
         [-0.0539],
         [-0.0540]],

        [[-0.0555],
         [-0.0537],
         [-0.0523],
         ...,
         [-0.0540],
         [-0.0540],
         [-0.0539]],

        ...,

        [[-0.0555],
         [-0.0537],
         [-0.0523],
         ...,
         [-0.0539],
         [-0.0540],
         [-0.0539]],

        [[-0.0555],
         [-0.0537],
         [-0.0523],
         ...,
         [-0.0540],
         [-0.0540],
         [-0.0540]],

        [[-0.0555],
         [-0.0537],
         [-0.0523],
         ...,
         [-0.0539],
         [-0.0539],
         [-0.0539]]], device='cuda:0', grad_fn=<AddBackward0>)
----------------------------------------------------------------------------------------------------
tensor([[[-0.0555],
         [-0.0537],
         [-0.0523],
         ...,
         [-0.0539],
         [-0.0539],
         [-0.0539]],

        [[-0.0555],
         [-0.0537],
         [-0.0523],
         ...,
         [-0.0540],
         [-0.0540],
         [-0.0539]],

        [[-0.0555],
         [-0.0537],
         [-0.0523],
         ...,
         [-0.0540],
         [-0.0540],
         [-0.0540]],

        ...,

        [[-0.0555],
         [-0.0537],
         [-0.0523],
         ...,
         [-0.0540],
         [-0.0540],
         [-0.0540]],

        [[-0.0555],
         [-0.0537],
         [-0.0524],
         ...,
         [-0.0540],
         [-0.0540],
         [-0.0540]],

        [[-0.0555],
         [-0.0537],
         [-0.0523],
         ...,
         [-0.0540],
         [-0.0540],
         [-0.0540]]], device='cuda:0', grad_fn=<AddBackward0>)

打个断电看看问题在哪吧

这不是正确的?哪里一样了?

img