精华内容
下载资源
问答
  • 向量转换

    2021-04-25 15:01:40
    向量转换 对于顶点的转换相对直接,可以通过model,view,projection三次转换得到转换结果。 法向量一般会在view space进行计算,那么直接进行如下计算是否正确呢? normalview=view∗model∗normalmodelnormal_{...

    法向量转换

    对于顶点的转换相对直接,可以通过model,view,projection三次转换得到转换结果。
    法向量一般会在view space进行计算,那么直接进行如下计算是否正确呢?normalview=viewmodelnormalmodelnormal_{view} = view * model * normal_{model}答案是否定的,一旦缩放不是等比例的,转换后的法向量也将不再垂直于表面。

    详细说明

    • TT 平移:平移可以无视,对于法向量来说不会产生影响,因为向量是方向,齐次坐标最后一位为0
    • RR 旋转:旋转不会影响法向量与表面的垂直性
    • SS 缩放:等比例缩放不会影响垂直性,非等比例缩放则会影响垂直性,2:1的缩放,对应到法向量,若要保持垂直关系,应该为逆缩放,即 0.5:1

    由上分析可得,只要将缩放矩阵进行逆操作,就能保持法向量在变换后仍然垂直于表面。
    M=viewmdoelM=view * mdoel,则法向量变换公式为:normalview=(M1)Tnormalmodelnormal_{view} = (M ^{-1}) ^{T} * normal_{model}

    解释

    • 平移不影响法向量方向性,因此无视;
    • 旋转为正交阵,逆=转置,因此逆的转置等于两次逆;
    • 缩放矩阵参数在对角线,转置不会影响到对角线,因此逆的转置等于逆。

    上面是比较tricky的思考方式,容易记忆,下面也做下严谨的推导:

    数学推导

    可知切线与法线呈垂直关系,其中切线是由表面上2个顶点间的差值定义的,因此上述的MM矩阵可以直接应用于切线TT,即:Tview=MTT_{view} = MT 设经过矩阵GG的变换,可以得到正确的法向量NviewN_{view}Nview=GNN_{view} = GN 根据垂直关系可得:TviewNview=(MT)GN=(MT)TGN=TTMTGN=0T_{view} · N_{view} = (MT)·GN = (MT)^{T}GN =T^{T}M^{T}GN=0 其中TN=TTN=0T·N =T^{T}N=0,因此可得MTG=0M^{T}G=0,于是:G=(MT)1=(M1)TG=(M^{T})^{-1}=(M^{-1})^{T} 由上证明了法向量的转换矩阵为变换矩阵逆的转置。

    展开全文
  • 今天小编就为大家分享一篇numpy:np.newaxis 实现将行向量转换成列向量,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • fasttext训练的bin格式词向量转换为vec格式词向量 #加载的fasttext预训练词向量都是vec格式的,但fasttext无监督训练后却是bin格式,因此需要进行转换 # 以下代码为fasttext官方推荐: # 请将以下代码保存在bin_to_...

    fasttext训练的bin格式词向量转换为vec格式词向量

    #加载的fasttext预训练词向量都是vec格式的,但fasttext无监督训练后却是bin格式,因此需要进行转换
    # 以下代码为fasttext官方推荐:
    # 请将以下代码保存在bin_to_vec.py文件中
    from __future__ import absolute_import
    from __future__ import division
    from __future__ import print_function
    from __future__ import unicode_literals
    from __future__ import division, absolute_import, print_function
    
    from fasttext import load_model
    import argparse
    import errno
    
    if __name__ == "__main__":
        # 整个代码逻辑非常简单
        # 以bin格式的模型为输入参数
        # 按照vec格式进行文本写入
        # 可通过head -5 xxx.vec进行文件查看
        parser = argparse.ArgumentParser(
            description=("Print fasttext .vec file to stdout from .bin file")
        )
        parser.add_argument(
            "model",
            help="Model to use",
        )
        args = parser.parse_args()
    
        f = load_model(args.model)
        words = f.get_words()
        print(str(len(words)) + " " + str(f.get_dimension()))
        for w in words:
            v = f.get_word_vector(w)
            vstr = ""
            for vi in v:
                vstr += " " + str(vi)
            try:
                print(w + vstr)
            except IOError as e:
                if e.errno == errno.EPIPE:
                    pass
    
    
    # 在bin_to_vec.py路径下执行该命令,生成unsupervised_data.vec
    python bin_to_vec.py unsupervised_data.bin > unsupervised_data.vec
    
    展开全文
  • 向量转换为世界空间坐标 我们已经把法向量从顶点着色器传到了片段着色器。可是,目前片段着色器里的计算都是在世界空间坐标中进行的。所以,我们是不是应该把法向量也转换为世界空间坐标?基本正确,但是这不是...

    法向量转换为世界空间坐标

    我们已经把法向量从顶点着色器传到了片段着色器。可是,目前片段着色器里的计算都是在世界空间坐标中进行的。所以,我们是不是应该把法向量也转换为世界空间坐标?基本正确,但是这不是简单地把它乘以一个模型矩阵就能搞定的。

    首先,法向量只是一个方向向量,不能表达空间中的特定位置。同时,法向量没有齐次坐标(顶点位置中的w分量)。这意味着,位移不应该影响到法向量。因此,如果我们打算把法向量乘以一个模型矩阵,我们就要从矩阵中移除位移部分,只选用模型矩阵左上角3×3的矩阵(注意,我们也可以把法向量的w分量设置为0,再乘以4×4矩阵;这同样可以移除位移)。对于法向量,我们只希望对它实施缩放和旋转变换。

    其次,如果模型矩阵执行了不等比缩放,顶点的改变会导致法向量不再垂直于表面了。因此,我们不能用这样的模型矩阵来变换法向量。下面的图展示了应用了不等比缩放的模型矩阵对法向量的影响:
    在这里插入图片描述
    每当我们应用一个不等比缩放时(注意:等比缩放不会破坏法线,因为法线的方向没被改变,仅仅改变了法线的长度,而这很容易通过标准化来修复),法向量就不会再垂直于对应的表面了,这样光照就会被破坏。

    修复这个行为的诀窍是使用一个为法向量专门定制的模型矩阵。这个矩阵称之为法线矩阵(Normal Matrix),它使用了一些线性代数的操作来移除对法向量错误缩放的影响。如果你想知道这个矩阵是如何计算出来的,建议去阅读这个文章。

    法线矩阵被定义为「模型矩阵左上角的逆矩阵的转置矩阵」。真是拗口,如果你不明白这是什么意思,别担心,我们还没有讨论逆矩阵(Inverse Matrix)和转置矩阵(Transpose Matrix)。注意,大部分的资源都会将法线矩阵定义为应用到模型-观察矩阵(Model-view Matrix)上的操作,但是由于我们只在世界空间中进行操作(不是在观察空间),我们只使用模型矩阵。

    在顶点着色器中,我们可以使用inverse和transpose函数自己生成这个法线矩阵,这两个函数对所有类型矩阵都有效。注意我们还要把被处理过的矩阵强制转换为3×3矩阵,来保证它失去了位移属性以及能够乘以vec3的法向量。

    Normal = mat3(transpose(inverse(model))) * aNormal;
    

    在漫反射光照部分,光照表现并没有问题,这是因为我们没有对物体本身执行任何缩放操作,所以并不是必须要使用一个法线矩阵,仅仅让模型矩阵乘以法线也可以。可是,如果你进行了不等比缩放,使用法线矩阵去乘以法向量就是必不可少的了。

    即使是对于着色器来说,逆矩阵也是一个开销比较大的运算,因此,只要可能就应该避免在着色器中进行逆矩阵运算,它们必须为你场景中的每个顶点都进行这样的处理。用作学习目这样做是可以的,但是对于一个对效率有要求的应用来说,在绘制之前你最好用CPU计算出法线矩阵,然后通过uniform把值传递给着色器(像模型矩阵一样)。

    展开全文
  • 5,使用softmax将得分向量z转换为概率 6,真实的y是中心词的one-hot向量,而 是对它的预测。因此想办法找到最适合的V和U,使y和 尽可能接近,就可以达到目的。本质上就是学习每个单词 的输入矩阵列向量 和输出...
    具体例子假设我们现在的Corpus是这一个简单的只有四个单词的document:
    {I drink coffee everyday}
    我们选coffee作为中心词,window size设为2
    也就是说,我们要根据单词"I","drink"和"everyday"来预测一个单词,并且我们希望这个单词是coffee。
    1baa90fd05b725a28de742dab25bef36.png12ae686ac9224b4c64bc58a67adf84c1.png68ab3ea03be989300c299da8158a205c.png09428f9a38c93d4ca66864c9da4a2934.pngddd553a8b85dc9edd1bdb36c2cef3eb9.png假设我们此时得到的概率分布已经达到了设定的迭代次数,那么现在我们训练出来的look up table应该为矩阵W。即,任何一个单词的one-hot表示乘以这个矩阵都将得到自己的word embedding。有了上面的介绍,我们来看看CBOW具体的训练步骤根据指定窗口的上下文预测或生成它的中心词。比如,根据{“the”,“cat”,“over”,“the”,“puddle”}预测或生成单词jumped。首先,模型已知的参数,我们用one-hot向量表示整个上下文,记为 9d64fc91-0544-eb11-8da9-e4434bdf6706.svg 。同时,因为CBOW模型仅预测一个单词,所以输出是一个中心词的one-hot表示,记为 9e64fc91-0544-eb11-8da9-e4434bdf6706.svg 。接着,模型未知的参数,我们定义 a064fc91-0544-eb11-8da9-e4434bdf6706.svg 和 a164fc91-0544-eb11-8da9-e4434bdf6706.svg 矩阵,其中n是用户指定的词向量空间大小。V是输入的词矩阵,即V的第i列表示单词 a264fc91-0544-eb11-8da9-e4434bdf6706.svg 的n维词向量,记为列向量 a464fc91-0544-eb11-8da9-e4434bdf6706.svg 。同样,U是输出的词矩阵,即U的第j行表示单词 a664fc91-0544-eb11-8da9-e4434bdf6706.svg 的n维词向量,记为行向量 a864fc91-0544-eb11-8da9-e4434bdf6706.svg 。

    CBOW训练过程6步

    • 1,生成以one-hot向量表示,size=m的上下文窗口输入:a964fc91-0544-eb11-8da9-e4434bdf6706.svg )
    • 2,初始化矩阵V,生成模型的输入词向量 :aa64fc91-0544-eb11-8da9-e4434bdf6706.svg
    • 3,计算上下文窗口内词向量的均值向量:ab64fc91-0544-eb11-8da9-e4434bdf6706.svg
    • 4,初始化矩阵U,生成得分向量 ac64fc91-0544-eb11-8da9-e4434bdf6706.svg ;
    • 5,使用softmax将得分向量z转换为概率 ad64fc91-0544-eb11-8da9-e4434bdf6706.svg 
    • 6,真实的y是中心词的one-hot向量,而 af64fc91-0544-eb11-8da9-e4434bdf6706.svg 是对它的预测。因此想办法找到最适合的V和U,使y和 af64fc91-0544-eb11-8da9-e4434bdf6706.svg 尽可能接近,就可以达到目的。
    本质上就是学习每个单词 a264fc91-0544-eb11-8da9-e4434bdf6706.svg 的输入矩阵列向量 a464fc91-0544-eb11-8da9-e4434bdf6706.svg 和输出矩阵行向量 b664fc91-0544-eb11-8da9-e4434bdf6706.svg 。为了实现上述目标,首先需要定义目标函数。通常,概率领域的建模会使用信息理论来测量2个分布之间的距离。在CBOW模型中,我们选择交叉熵作为损失函数,即 b764fc91-0544-eb11-8da9-e4434bdf6706.svg y是one-hot向量,中心词 b864fc91-0544-eb11-8da9-e4434bdf6706.svg 所在的位置c,值 b964fc91-0544-eb11-8da9-e4434bdf6706.svg 是1,其余为0。显然,当 bc64fc91-0544-eb11-8da9-e4434bdf6706.svg 时,损失H最小为0,但当 be64fc91-0544-eb11-8da9-e4434bdf6706.svg 时,损失H约为4.6。因此,交叉熵H给概率分布的距离计算提供了一个非常好的方法。最优化目标函数:c064fc91-0544-eb11-8da9-e4434bdf6706.svg
    93b266c107342d3787943f7a69291d02.pngCBOW的目标函数
    最后,我们使用梯度下降迭代更新 c264fc91-0544-eb11-8da9-e4434bdf6706.svg 和 c364fc91-0544-eb11-8da9-e4434bdf6706.svg , 收敛到最终词向量。所以,需要定义loss function(一般为交叉熵代价函数),采用梯度下降算法更新W和W'。训练完毕后,输入层的每个单词与矩阵W相乘得到的向量的就是我们想要的词向量(word embedding),这个矩阵(所有单词的word embedding)也叫做look up table(其实聪明的你已经看出来了,其实这个look up table就是矩阵W自身),也就是说,任何一个单词的onehot乘以这个矩阵都将得到自己的词向量。有了look up table就可以免去训练过程直接查表得到单词的词向量了。参考
    [1] https://www.zhihu.com/question/44832436/answer/266068967
    展开全文
  • 我有一个使用Spark的VectorAssembler打包成矢量向量的特征列,如下所...将特征的Spark向量转换为数组val featureCols = Array("feature_1","feature_2","feature_3")val featureAssembler = new VectorAssembler()....
  • 使用caffe批量提取4096维特征,每个特征向量存在一个txt中,为了进行聚类等操作,需要将txt中列向量转换为行向量再次存入txt。 clear;clc; current = 'C:\Users\Administrator\Desktop\FT'; A = dir(current); for ...
  • What is the best way to convert a vector to a 2-dimensional array?For example, a vector b of size (10, )a = rand(10,10)b = a[1, :]b.shapeOut: (10L,)can be converted to array of size (10,1) asb = b.res...
  • 把旋转向量转换成旋转矩阵SO(3),使用罗德里格斯公式进行转换 需要注意到的是solvepnp函数解出来的是旋转向量r,将r转换成这种型式r=[\theta]
  • 浅谈文本词向量转换的机制embedding

    千次阅读 2018-03-12 18:37:52
    首先感谢大家对上一篇...上文说道关于文本词向量转换的embedding相关的内容,其实是没有详细说明的,那这一篇我尝试着去解释一些,说的不对的还望各位大神指正,我也是自学的,没人一起讨论,可能有理解不到位的地方。
  • Excel表格里将一列向量转换成矩阵的方法 将如图所示的含有24个元素的列向量转换成4*6的矩阵 选中需要放置矩阵的地方,输入: =INDEX( $B$107: $B$130,(ROW(1:6)-1)*4+COLUMN(A:D)) 下拉右拉即可。 index函数的...
  • ###读取已训练好的词向量 from gensim.models import word2vec w2v=word2vec.Word2Vec.load('d:/chat_data/corpus_vector.model') ##对文本进行分词 import jieba import re raw_data = [] w = open('****...
  • nlp之词向量转换

    2019-11-21 16:17:34
    # 分词器,仅保留数据中前10000个最常见的单词作为特征,低频单词将被舍弃 tokenizer = text.Tokenizer(num_words=max_features) ...# 将评论数据的单词转换成速数形式,如:[1,0,3,,2,0] X_train = tokenizer.tex...
  • 近年来,研究人员通过文本上下文信息分析获得更好的词向量。ELMo是其中的翘楚,在多个任务、多个数据集上都有显著的提升。所以,它是目前最好用的词向量,the-state-of-the-art的方法。这篇文章发表在2018年的NAACL...
  • 假设以下是带有值的向量-Vectorv=newVector();v.add("20");v.add("40");v.add("60");v.add("80");v.add("100");现在,将上面的Vector转换为List-ListmyList=newArrayList(v);示例以下是在Java中将Vector转换为List的...
  • AttributeError: module 'sys' has no attribute 'setdefaultencoding'通过搜狗新闻语料用word2Vec训练中文模型代码存放仓库1、在RNN中词使用one_hot表示的问题(使用词嵌入的意义)假设有10000个词每个词的向量长度都...
  • Numpy之将矩阵拉成向量的实例废话不多说,直接上代码吧!# 矩阵操作# 将矩阵拉成向量import numpy as npx = np.arange(10).reshape(2,5)print(x)y1 = x.ravel()y2 = x.flatten()print("y1: ",y1," y2: ",y2)print(x)...
  • 5,使用softmax将得分向量z转换为概率 6,真实的y是中心词的one-hot向量,而 是对它的预测。因此想办法找到最适合的V和U,使y和 尽可能接近,就可以达到目的。 本质上就是学习每个单词 的输入矩阵列向量 和...
  • np.newaxis 新增一个轴 如何将数组[0,1,2]转换成列向量用ndarray[: , np.newaxis]代码实质就是将原本的(0,1,2)移到行上,然后新增一列其实可以更简单ndarray.shape=(3,1) >> x = np.arange(3)&gt...
  • I have a set of 3D coordinates points: [lat,long,elevation] ([X,Y,Z]), derived from LIDAR data.The points are not sorted and the steps size between the points is more or less random.My goal is to buil...
  • 向量X转换成标量,且向量X只能为一维含单个元素的向量 X:nd类型的数据 创建一个单个元素的向量 test=nd.array([2]) 输出: [2.] <NDArray 1 @cpu(0)> 转换成标量: test.asscalar()...
  • 在做 NLP 的任务时,一个非常 basic 的操作就是如何编码自然语言中的符号,例如词、短语,甚至词缀。...• 神经网络:目前非常流行通过神经网络端到端的建模语言模型,得到词向量副产品;今天要讲解的就是 Skip...
  • BookRead 矩阵变换深度理解 - 《3D数学基础 :图形与游戏开发》 坐标系系统介绍 多坐标系 向量 矩阵 齐次矩阵 矩阵和线性变换概述 矩阵变换的理解 矩阵变换的理解(0)- 变换物体与变换坐标系 矩阵变换的理解(1)- ...
  • np.newaxis 新增一个轴如何将数组[0,1,2]转换成列向量用ndarray[: , np.newaxis]代码实质就是将原本的(0,1,2)移到行上,然后新增一列其实可以更简单ndarray.shape=(3,1)>> x = np.arange(3)>> xarray([0...
  • unity快速将旋转向量转换为四元数

    千次阅读 2019-05-14 18:53:45
  • numpy中表示向量和矩阵乘法的有四种"*"、outer、dot、multiply。1、关于 "*" 的用法"*" 也为对于元素的乘积,但是 "*" 作为乘法运算时,必须满足 numpy 的 broadcasting(广播) 的原则 ,当两个矩阵相乘时,其法则为...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,868
精华内容 2,347
关键字:

向量转换