Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么tensor.numpy()输出不同的值?_Python_Numpy_Pytorch - Fatal编程技术网

Python 为什么tensor.numpy()输出不同的值?

Python 为什么tensor.numpy()输出不同的值?,python,numpy,pytorch,Python,Numpy,Pytorch,我在特征矩阵和该矩阵的一行上使用了tensor.numpy()进行比较。我发现矩阵的行输出和对应行的值不一样。有人知道为什么吗 def consine_distance_byrow(f1, f2): feat1 = f1.view(-1, 1) dists = torch.mm(f2, feat1) dists = dists.numpy() return dists def consine_distance(f1, f2): feat1 = torch

我在特征矩阵和该矩阵的一行上使用了tensor.numpy()进行比较。我发现矩阵的行输出和对应行的值不一样。有人知道为什么吗

def consine_distance_byrow(f1, f2):
    feat1 = f1.view(-1, 1)
    dists = torch.mm(f2, feat1)
    dists = dists.numpy()
    return dists

def consine_distance(f1, f2):
    feat1 = torch.transpose(f1, 0, 1)
    dists = torch.mm(f2, feat1)
    dists = dists.numpy()
    return dists

# load trainingset data
feature_path = '../../cnn/pytorch_result_train_val_' + str(self.feature_nums) + '.mat'
result = scipy.io.loadmat(feature_path)
train_feature = torch.FloatTensor(result['train_f']) # M x 512d
dists = consine_distance(train_feature, train_feature) # way1
for i in range(len(train_label)):
    distsT = consine_distance_byrow(train_feature[i], train_feature) # way2
    # here, dists[:,i] is slightly different with distsT
e、 g

显然,这有一点不同


这是在tensor.numpy()之后产生的,在这一步之前,两个张量是相同的!您能否找到一个不依赖于从文件加载的功能的版本?这将使我们的分析更容易。我认为这与精度的限制有关。看看这个
dists[:0] = [ 1.0000001  -0.15086517 -0.08085391 ... -0.05950543 -0.03058994
  0.10164267]


while i=0, distT = [[ 0.99999964]
 [-0.15086518]
 [-0.0808539 ]
 ...
 [-0.05950541]
 [-0.03058996]
 [ 0.1016427 ]]