Pytorch操作

1. Pytorch和Numpy的乘法操作汇总

  1. torch.mul()和乘法符号
    torch.mul()实现对应位相乘(和乘法符号相同),要求两个矩阵维度相同,如果第一维不同可以广播
  2. torch.mm()仅实现简单二维矩阵乘法,它的扩展有matmul()、bmm()等
  3. torch.matmul()实现矩阵乘法。当输入两个二维矩阵,同torch.mm();当输入是3维和2维,则默认3维的第一维为batch_size,后两维进行矩阵乘,得到batch_size保持不变的三维矩阵;当输入都是3维,第一维广播成一样大,后两维做矩阵乘法。
  4. np.dot()如果传入两个大小相同的向量,实现向量点积,得到一个数;如果传入两个矩阵,则进行矩阵乘积
import torch
a = torch.tensor([[1, 2]])
b = torch.tensor([[1, 2], [3, 4]])

torch.mul(a, b) #tensor([[1, 4], [3, 8]])
torch.mm(a, b) # tensor([[7, 10]])

2. torch.repeat() https://blog.csdn.net/qq_34806812/article/details/89388210

对张量进行重复扩充。
当参数只有两个时:(列的重复倍数,行的重复倍数)。1表示不重复
当参数有三个时:(通道数的重复倍数,列的重复倍数,行的重复倍数)。

import torch
a= torch.arange(30).reshape(5,6)
print(a)
print('b:',a.repeat(2,2)) # 10x12
print('c:',a.repeat(2,1,1)) # 2x5x6

3. torch.nn.embedding()

从word2vec到现在深度学习,word_embedding都是一个意思。
1.首先我们获得语料大小,每个词的索引从数字0开始递增。
2.将数字转换为one-hot表示。
3.随机生成一个二维矩阵(语料大小x词嵌入维度)
4.任意一个单词的onehot和3中的二维矩阵相乘得到这个单词的embedding,也可以解释为embedding矩阵的每一行都是一个单词的嵌入。深度学习学习的就是这个embedding矩阵。
https://zhuanlan.zhihu.com/p/341176854

4. Dropout的实现

https://www.cnblogs.com/shiliuxinya/p/12266954.html
就是对每一层的输出结果以p的概率置零,如下图做了三次Linear,每次后的结果做一次dropout。

image.png

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容