精华内容
下载资源
问答
  • 张量距离
    万次阅读
    2019-06-27 15:41:44

    torch.cosine_similarity 可以对两个向量或者张量计算相似度

    >>> input1 = torch.randn(100, 128)
    >>> input2 = torch.randn(100, 128)
    >>> output = torch.cosine_similarity(input1, input2, dim=1)
    print(output.shape)

    torch.Size([100])
    

    hg1 = torch.FloatTensor(torch.randn([12]))
    hg2 = torch.FloatTensor(torch.randn([12]))
    torch.cosine_similarity(hg1, hg2, dim=0)

    tensor(-0.1543)

    pytorch计算欧式距离

    torch.dist(hg1, hg2, p=2)

    如果自己写的话就是:(因为很简单,大多数人自己写),Pytorch里封装了这个距离函数

    torch.sqrt(torch.sum((hg1-hg2)**2))

    Hamming 距离,汉密尔顿距离

    torch.dist(hg1, hg2, p=1)

    更多相关内容
  • 基于张量距离的高阶近邻传播聚类算法.pdf
  • 随着可穿戴式传感器和移动设备数量的增加,基于多个传感器的人类活动识别(HAR)近年来引起了越来越多的关注。 由于人类行为的多样性,对活动的... 其活动识别的正确率要高于模糊c均值聚类和基于张量距离的模糊聚类。
  • 机器学习笔记之Numpy与张量

    千次阅读 2020-10-31 11:20:32
    Numpy, 张量,相关函数使用(逐步更新)张量查看Numpy张量张量形状与数据类型相关函数np.exp(z)np.insert()函数np. argmax()np.mean() 张量 张量是矩阵向任意维度的推广(张量的维度通常叫轴) 仅含一个数字的张量...

    张量

    张量是矩阵向任意维度的推广(张量的维度通常叫轴)
    仅含一个数字的张量叫标量(0D张量)

    查看Numpy张量轴

    # 0D
    x = np.array(12)
    print(x)
    print(x.ndim)
    
    # 1D
    x = np.array([12, 3, 6, 14, 7])
    print(x)
    print(x.ndim)
    
    # 2D
    x = np.array([[1, 2, 3, 4, 5],
                  [4, 5, 6, 7, 8]])
    print(x)
    print(x.ndim)
    
    # 3D
    x = np.array([[[1, 2, 3],
                  [4, 5, 6],
                  [7, 8, 9]],
                 [[1, 2, 3],
                  [4, 5, 6],
                  [7, 8, 9]],
                 [[1, 2, 3],
                  [4, 5, 6],
                  [7, 8, 9]]])
    print(x)
    print(x.ndim)
    
    

    张量形状与数据类型

    形状是一个整数元组
    例如:

    # 2D
    x = np.array([[1, 2, 3, 4, 5],
                  [4, 5, 6, 7, 8]])
    print(x)
    print(x.shape)
    

    输出是(2, 5)

    数据类型可以是float32, unit8, float64

    逐元素相乘(与.dot点乘不同)

    例如B维度:(3,3),C维度(3,1)
    B*C维度(3,3)运用到了广播机制(将C复制两列然后逐元素相乘)
    例:

    import numpy as np
    B = np.array([[1, 1, 1],
                  [2, 2, 2],
                  [3, 3, 3]])
    
    C = np.array([[1],
                  [2],
                  [3]])
    
    # 逐元素相乘
    D = B*C
    print(D)
    

    在这里插入图片描述

    相关函数

    np.random.randn(n)

    生成五个随机高斯变量

    np.exp(z)

    表示e的z次方

    np.insert()函数

    np.insert(x, 0, values=1,axis=1)
    axis = 0: 表示竖直
    axis = 1:表示水平
    0:表示插入的索引值
    value:插入的值

    最终在每一行第一个位置插入1

    import numpy as np
    
    x = np.array([[2, 3, 4, 5],
                  [5, 6, 7, 8]])
    
    x = np.insert(x, 0, values=1,axis=1)
    print(x)
    

    在这里插入图片描述

    np. argmax()

    axis = 1 (行)
    np.argmax(a, axis=1):
    返回行最大值的索引

    例如:

    import numpy as np
    a = np.array([[1, 5, 5, 2],
                  [9, 6, 2, 8],
                  [3, 7, 9, 1]])
    print(np.argmax(a, axis=1))
    

    在这里插入图片描述

    np.mean()

    1.可以用来预测准确率:
    可计算预测值与实际值相等所占比例
    例如;

    import numpy as np
    y  = np.array([1, 0, 0, 1, 1])
    y1 = np.array([1, 0, 1, 0, 0])
    acc = np.mean(y==y1)
    print(acc)
    

    在这里插入图片描述

    np.linalg.norm()

    可用于计算m个点分别到k个点距离
    例:(1,1)(3,4)(5,12)分别到(0,0)(1,1)(2,2)距离

    import numpy as np
    
    li= np.array([[1, 1],
                  [3, 4],
                  [5, 12]])
    
    centro = np.array([[0, 0],
                       [1, 1],
                       [2, 2]])
    
    for i in range(len(li)):
        distance = np.linalg.norm((li[i]-centro), axis=1)
        print(distance)
    

    np.squeeze()

    可以将矩阵转化为列表
    例:

    import numpy as np
    
    X = np.array([[1],
                  [2],
                  [3],
                  [4]])
    print(X)
    x = np.squeeze(X)
    print(x)
    

    在这里插入图片描述

    展开全文
  • PyTorch:距离度量

    千次阅读 2021-04-22 10:34:33
    两个张量之间的欧氏距离 即m*e和n*e张量之间的欧式距离 理论分析 算法实现 import torch def euclidean_dist(x, y): """ Args: x: pytorch Variable, with shape [m, d] y: pytorch Variable, with ...

    两个张量之间的欧氏距离

    即m*e和n*e张量之间的欧式距离

    理论分析

    算法实现

    import torch


    def euclidean_dist(x, y):
        """
        Args:
          x: pytorch Variable, with shape [m, d]
          y: pytorch Variable, with shape [n, d]
        Returns:
          dist: pytorch Variable, with shape [m, n]
        """
        m = x.size(0)
        n = y.size(0)
        e = x.size(1)

        # 方式1
        a1 = torch.sum((x ** 2), 1, keepdim=True).expand(m, n)
        b2 = (y ** 2).sum(1).expand(m, n)
        dist = (a1 + b2 - 2 * (x @ y.T)).float().sqrt()
        print(dist)

        # 方式2
        x1 = x.unsqueeze(1).expand(m, n, e)
        y1 = y.expand(m, n, e)
        dist = (x1 - y1).pow(2).sum(2).float().sqrt()
        print(dist)

        # 方式3
        dist = torch.zeros((m, n))
        for i, xi in enumerate(x):
            for j, yi in enumerate(y):
                # 方式2.1
                # dist[i][j] = ((xi - yi) ** 2).sum().float().sqrt()
                # 方式2.2
                dist[i][j] = torch.pairwise_distance(torch.unsqueeze(xi, 0), torch.unsqueeze(yi, 0), p=2)
        print(dist)

        # 方式4
        dist = torch.zeros((m, n))
        for i, xi in enumerate(x):
            dist[i] = torch.pairwise_distance(xi, y, p=2)
        print(dist)
        return dist


    a = torch.tensor([[1, 2], [3, 4], [5, 6]])
    b = torch.tensor([[2, 3], [4, 5], [5, 6], [8, 9]])
    dist = euclidean_dist(a, b)

    tensor([[1.4142, 4.2426, 5.6569, 9.8995],
            [1.4142, 1.4142, 2.8284, 7.0711],
            [4.2426, 1.4142, 0.0000, 4.2426]])

    [矩阵之间欧式距离的快捷计算方法(无循环)]

    m*e和m*e张量之间的欧式距离pairwise_distance

    import torch.nn.functional as F
    distance = F.pairwise_distance(rep_a, rep_b, p=2)

    其中rep_a和rep_b为[batch_size,hidden_dim],两个维度必须相同,或者第一个维度为[hidden_dim]会自动进行广播操作(且最多只能有两个维度?)

    [torch.nn.PairwiseDistance(p=2.0, eps=1e-06, keepdim=False)]

    使用numpy完成相同操作

    import numpy as np
    def euclidean_dist(a, b):
        '''
        计算a中向量和b中向量 两两间的欧式距离
        '''
        import numpy as np
        a = np.asarray(a)
        b = np.asarray(b)
        dist = np.sqrt(np.sum(a ** 2, 1, keepdims=True).repeat(b.shape[0], axis=1) +
                       np.sum(b ** 2, 1, keepdims=True).repeat(a.shape[0], axis=1).transpose() - a.dot(b.transpose()) * 2)
        return dist


    a = np.array([[1, 2], [3, 4], [5, 6]])
    b = np.array([[2, 3], [4, 5], [5, 6], [8, 9]])
    dist = euclidean_dist(a, b)
    print(dist)

    [[1.41421356 4.24264069 5.65685425 9.89949494]
     [1.41421356 1.41421356 2.82842712 7.07106781]
     [4.24264069 1.41421356 0.         4.24264069]]

    -柚子皮-

    单个张量内部向量两两之间的欧氏距离

    def self_euclidean_dist(embeddings):
        # 方式1(类似euclidean_dist(x, y)方式2)
        m, m, e = len(embeddings), len(embeddings), embeddings.shape[1]
        t1 = embeddings.unsqueeze(1).expand(m, m, e)
        t2 = embeddings.unsqueeze(0).expand(m, m, e)
        dist = (t1 - t2).pow(2).sum(2).float().sqrt()
        print(dist)
        return dist


    a = torch.tensor([[1, 2], [3, 4], [5, 6]])
    self_euclidean_dist(a)
    from: -柚子皮-

    ref:

    展开全文
  • MATLAB 距离计算

    2021-04-18 07:59:58
    判别分析时,通常涉及到计算两个样本之间的距离,多元统计学理论中有多种距离计算公式。MATLAB中已有对应函数,可方便直接调用计算。距离函数有:pdist,pdist2, mahal, squareform, mdscale, cmdscale主要介绍pdist2...

    判别分析时,通常涉及到计算两个样本之间的距离,多元统计学理论中有多种距离计算公式。MATLAB中已有对应函数,可方便直接调用计算。距离函数有:pdist,

    pdist2, mahal, squareform, mdscale, cmdscale

    主要介绍pdist2 ,其它可参考matlab help

    D = pdist2(X,Y)

    D = pdist2(X,Y,distance)

    D = pdist2(X,Y,'minkowski',P)

    D = pdist2(X,Y,'mahalanobis',C)

    D = pdist2(X,Y,distance,'Smallest',K)

    D = pdist2(X,Y,distance,'Largest',K)

    [D,I] = pdist2(X,Y,distance,'Smallest',K)

    [D,I] = pdist2(X,Y,distance,'Largest',K)

    练习:

    2种计算方式,一种直接利用pdist计算,另一种按公式(见最后理论)直接计算。

    % distance

    clc;clear;

    x = rand(4,3)

    y = rand(1,3)

    for i =1:size(x,1)

    for j

    =1:size(y,1)

    a = x(i,:); b=y(j,:);

    % Euclidean distance

    d1(i,j)=sqrt((a-b)*(a-b)');

    % Standardized Euclidean distance

    V = diag(1./std(x).^2);

    d2(i,j)=sqrt((a-b)*V*(a-b)');

    % Mahalanobis distance

    C = cov(x);

    d3(i,j)=sqrt((a-b)*pinv(C)*(a-b)');

    % City block metric

    d4(i,j)=sum(abs(a-b));

    % Minkowski metric

    p=3;

    d5(i,j)=(sum(abs(a-b).^p))^(1/p);

    % Chebychev distance

    d6(i,j)=max(abs(a-b));

    % Cosine distance

    d7(i,j)=1-(a*b')/sqrt(a*a'*b*b');

    % Correlation distance

    ac = a-mean(a); bc =

    b-mean(b); d8(i,j)=1- ac*bc'/(sqrt(sum(ac.^2))*sqrt(sum(bc.^2)));

    end

    end

    md1 = pdist2(x,y,'Euclidean');

    md2 = pdist2(x,y,'seuclidean');

    md3 = pdist2(x,y,'mahalanobis');

    md4 = pdist2(x,y,'cityblock');

    md5 = pdist2(x,y,'minkowski',p);

    md6 = pdist2(x,y,'chebychev');

    md7 = pdist2(x,y,'cosine');

    md8 = pdist2(x,y,'correlation');

    md9 = pdist2(x,y,'hamming');

    md10 = pdist2(x,y,'jaccard');

    md11 = pdist2(x,y,'spearman');

    D1=[d1,md1],D2=[d2,md2],D3=[d3,md3]

    D4=[d4,md4],D5=[d5,md5],D6=[d6,md6]

    D7=[d7,md7],D8=[d8,md8]

    md9,md10,md11

    运行结果如下:

    x =

    0.5225 0.6382 0.6837

    0.3972 0.5454 0.2888

    0.8135 0.0440 0.0690

    0.6608 0.5943 0.8384

    y =

    0.5898 0.7848 0.4977

    D1 =

    0.2462 0.2462

    0.3716 0.3716

    0.8848 0.8848

    0.3967 0.3967

    D2 =

    0.8355 0.8355

    1.5003 1.5003

    3.1915 3.1915

    1.2483 1.2483

    D3 =

    439.5074 439.5074

    437.5606 437.5606

    438.3339 438.3339

    437.2702 437.2702

    D4 =

    0.3999 0.3999

    0.6410 0.6410

    1.3934 1.3934

    0.6021 0.6021

    D5 =

    0.2147 0.2147

    0.3107 0.3107

    0.7919 0.7919

    0.3603 0.3603

    D6 =

    0.1860 0.1860

    0.2395 0.2395

    0.7409 0.7409

    0.3406 0.3406

    D7 =

    0.0253 0.0253

    0.0022 0.0022

    0.3904 0.3904

    0.0531 0.0531

    D8 =

    1.0731 1.0731

    0.0066 0.0066

    1.2308 1.2308

    1.8954 1.8954

    md9 =

    1

    1

    1

    1

    md10 =

    1

    1

    1

    1

    md11 =

    1.5000

    0.0000

    1.5000

    2.0000

    基本理论公式如下:

    a4c26d1e5885305701be709a3d33442f.png

    a4c26d1e5885305701be709a3d33442f.png

    a4c26d1e5885305701be709a3d33442f.png

    展开全文
  • 为了正则化扩散张量磁共振成像所产生的扩散张量场,提出了一种非线性张量值加权方向距离滤波方法。首先通过张量间的二次点积定义了张量值图像的方向滤波,然后结合张量中值滤波引入了一个联合最小化准则,在此准则的...
  • 本文通过cuda实现计算向量a(n维)到矩阵b(n*n)的欧式距离,将结果输出到向量c(n维)中。本文主要采用cuda+c语言实现,代码经过调试。
  • 随着弥散张量成像(Diffusion Tensor Imaging, DTI)设备的临床应用,弥散张量图像分割算法已...本算法采用张量的欧氏距离构造能量函数,实验结果表明算法对DTI数据分割可以得到较好的结果,效率提高为原来的6~7倍。
  • 针对传统模糊C均值聚类算法对图像特征描述单一,易受图像复杂纹理干扰而出现误分割的问题,提出一种基于自适应结构张量的FCM算法,并将其应用于...采用一种新颖的节点间距离度量公式来计算图像中节点与聚类中心点的差异.仿
  • 张量分解浅谈(二 CP NMF 张量秩)

    千次阅读 多人点赞 2020-07-18 22:59:26
    欢迎大家来到这一期的张量分解博客学习,本期博客的主要内容就是标题,难度会加大,本人也有写的错误的地方,烦请大家不吝赐教!
  • 十二、张量网络机器学习 1. 机器学习基本思想        简单来说,机器学习可以看成是一个接受输入信息后,输出想要得到的目标信息的一种模型。我们进行机器学习的目的就是找到...
  • 模总体散布矩阵获得三个由最大特征值对应的特征向量组成的将张量样本投影到低维子空间的投影矩阵,并构造交替最小二乘法的迭代过程对矩阵进行优化得到最优投影矩阵,使得投影后的样本间的距离尽可能得大,以达到最佳...
  • 张量(tensor)的理解

    2016-11-06 10:14:00
    1. 从标量到矢量:携带更丰富的信息 矢,是箭的意思,突出的特点是其指向性。 袋子里有几个球? 3 个,magnitude(幅度,没有...步行 3km,显然是不够的,除了距离(distance)或者幅值(magnitude)外,还...
  • PyTorch有各种组件: Torch有与NumPy类似的功能,但是支持GPU。 torch.autograd提供了用于实现任意标量值函数的...Multiprocessing是一个用于在多个张量之间共享内存的有用库。 Utils有加载数据的实用函数;它还有其
  • 矩阵和张量运算构成了广泛领域和应用的基础,并且在许多情况下构成了整体计算复杂性的重要部分。通用gpu能够加速其中许多操作并使其他操作成为可能,这导致了这些设备的广泛适应性。为了充分利用张量运算的计算能力...
  • 二维张量 乘以 三维张量 机器学习 (Machine Learning) Let’s first briefly recall what linear regression is: 让我们首先简要回顾一下线性回归是什么: Linear regression is estimating an unknown variable in...
  • 张量 神经网络使用的数据经常是存储在Numpy数组中,也称为张量。 一般来说,当前所有机器学习系统都使用张量作为基本数据结构。 张量这一概念的核心在于,它是一个数据容器。它包含的数据几乎总是数值数据,因此它...
  • $$ f(R,{\ mathcal {G}})$$ f(R,G)重力场方程用物质场和重力场的应力-能量伪张量以明显的波动方程形式重写。 作为de Donder条件下的来源。 $$ f(R,{\ mathcal {G}})$$ f(R,G)重力的线性场方程与线性f(R...
  • pytorch_lesson1 张量的创建和常用方法

    千次阅读 2022-04-22 16:12:37
    白嫖GPU 二、 tensor张量 (一)张量(Tensor)的基本创建及其类型 1、张量(Tensor)函数创建方法 (1)通过列表创建张量 (2)通过元组创造张量 (3)通过数组重建张量 2、张量的类型 (1)整数型 (2)浮点型 ...
  • 这里写目录标题一、无穷大张量网络的本征自洽方法张量网络的梯度更新任意尺寸张量网络收缩算法张量网络中的有效哈密顿量思想 一、无穷大张量网络的本征自洽方法 无穷大张量网络的本征自洽方法,称为张量网络编码算法...
  • 张量的广播和科学运算 数学运算与算子   作为PyTorch中执行深度学习的基本数据类型,张量(Tensor)也拥有非常多的数学运算函数和方法,以及对应的一系列计算规则。在PyTorch中,能够作用与Tensor的运算,被统一...
  • 深度学习基础:1.张量的基本操作

    千次阅读 2021-09-29 01:05:23
    张量(Tensor)的基本含义 张量,可以简单的理解为多维数组,是二维向量在更高的维度的延申。 用到的库和框架 import torch import numpy as np 张量的创建torch.tensor() 通过列表创建张量 # 通过列表创建张量 t ...
  • 弥散张量成像DTI

    千次阅读 2020-07-14 00:28:36
    弥散张量成像原理 Diffusion tensor imaging, DTI什么是弥散张量成像?基本概念背景弥散张量的定量表示量化指标平均弥散系数各向异性程度弥散的主要方向三维可视化量化分析参考文献 什么是弥散张量成像? 基本概念 ...
  • 余弦距离(Cosine Distance)也可以叫余弦相似度。 几何中夹角余弦可用来衡量两个向量方向的差异,机器学习中借用这一概念来衡量样本向量之间的差异。相比距离度量,余弦相似度更加注重两个向量在方向上的差异,而非...
  • 基于完好像素点与受损点之间的距离,构造紧密度系数计算模型,从而考虑损坏区域周边参考点的影响;基于PDE技术,将结构张量嵌入其中,并联合紧密度系数构造新的扩散速度模型,使其只沿着等照度曲线方向扩散,将从...
  • 基于张量距离的多线性局部保持最大信息嵌入 摘要:本文提出了一种基于张量的降维(dimensionality reduction,DR)统一框架,该框架采用了一种新的张量距离(tensor distance,TD)度量和一种新的多线性局部保持最大...
  • 张量投票(Tensor voting)理论是一种经典的显著性结构特征推理理论, 最初由南加利福尼亚大学Guy等首先提出[.其基本思想源于心理学领域的Gestalt原理, 即:人类视觉系统趋于根据某种准则将所提取到的图像特征按照某种...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 9,221
精华内容 3,688
关键字:

张量距离