IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> python+pytorch学习点滴记录 -> 正文阅读

[人工智能]python+pytorch学习点滴记录

1、enumerate

python内置的函数,遍历一个数据对象并返回索引列表,同时列出数据下标和数据
list = ["a", "b", "c"]
for i,elem in enumerate(list):
?? ?print(i, elem)
?? ?
返回:
0 a
1 b
2 c

2、tqdm

它是一个可以显示进度条的模块
当tqdm和enumerate结合时,比如
from tqdm import tqdm
list = ["a", "b", "c"]
for i,elem in enumerate(tqdm(list)):
?? ?print(i, elem)

返回:
0 a
1 b
2 c
100%|██████████| 3/3 [00:00<?, ?it/s]

3、word embedding
将源数据映射到另外一个空间,一对一映射。可以将自然语言所表示的单次或短语转换为计算机所能理解的由实数构成的向量或矩阵形式。这样得到一个向量以后,就可以通过计算向量之间的相似度来得出语义的相关性。
torch.nn.Embedding(num_embeddings, embedding_dim)
num_embeddings: 嵌入字典的大小(词的个数)
embedding_dim: 每个嵌入向量的大小(每个词对应的维度)
该方法定义了一个简单的存储固定大小的词典的嵌入向量的查找表,即这个返回的是一个词典。如果要访问查找表,需要给定一个编号,嵌入层就能返回这个编号对应的嵌入向量。
注意:初始化的时候,里面的值都是随机的,后续需要训练模型。

示例一:初始化一个embedding并进行值索引
import torch
import torch.nn as nn

word1 = torch.LongTensor([0,1,2])
word2 = torch.LongTensor([3,1,2])
embedding = nn.Embedding(4, 5)
print(embedding.weight)
print("word1:")
print(embedding(word1))
print("word2:")
print(embedding(word2))

返回:
tensor([[ 0.0514, -1.0414, ?0.2586, -0.8766, -0.1747],
? ? ? ? [-0.8588, ?0.4468, ?0.7430, -0.7781, -1.5827],
? ? ? ? [-2.0571, ?0.0059, ?0.3309, -0.0148, -1.8753],
? ? ? ? [ 0.4409, ?0.8645, ?0.2430, ?0.4251, -0.2876]], requires_grad=True)
word1:
tensor([[ 0.0514, -1.0414, ?0.2586, -0.8766, -0.1747],
? ? ? ? [-0.8588, ?0.4468, ?0.7430, -0.7781, -1.5827],
? ? ? ? [-2.0571, ?0.0059, ?0.3309, -0.0148, -1.8753]],
? ? ? ?grad_fn=<EmbeddingBackward>)
word2:
tensor([[ 0.4409, ?0.8645, ?0.2430, ?0.4251, -0.2876],
? ? ? ? [-0.8588, ?0.4468, ?0.7430, -0.7781, -1.5827],
? ? ? ? [-2.0571, ?0.0059, ?0.3309, -0.0148, -1.8753]],
? ? ? ?grad_fn=<EmbeddingBackward>)


示例二:embedding模型训练更新权重
import torch
from torch.nn import Embedding

class Model(torch.nn.Module):
? ? def __init__(self):
? ? ? ? super(Model, self).__init__()
? ? ? ? self.emb = Embedding(5, 10)

? ? def forward(self, vec):
? ? ? ? input = torch.tensor([0, 1, 2, 3, 4])
? ? ? ? emb_vec1 = self.emb(input)
? ? ? ? print(emb_vec1)
? ? ? ? output = torch.einsum('ik, kj -> ij', emb_vec1, vec)
? ? ? ? return output

def simple_train():
? ? model = Model()
? ? vec = torch.randn((10, 1))
? ? label = torch.Tensor(5, 1).fill_(3)
? ? loss_fn = torch.nn.MSELoss()
? ? opt = torch.optim.SGD(model.parameters(), lr=0.05)

? ? for iter_num in range(100):
? ? ? ? output = model(vec)
? ? ? ? loss = loss_fn(output, label)
? ? ? ? print('iter:%d loss:%.2f' % (iter_num, loss))
? ? ? ? opt.zero_grad()
? ? ? ? loss.backward(retain_graph=True)
? ? ? ? opt.step()

if __name__ == '__main__':
? ? simple_train()

model中的参数就是一个embedding,前向传播总是编码同一个词汇表,然后乘上输入的向量。经果训练滞后embedding乘上向量可以得到全为3的向量。优化器中的参数仅有embedding,所以bedding是会被训练的。

4、torch.distributions.normal.Normal
torch.distributions定义了正态分布

import torch
from torch.distributions import Normal

mean = torch.Tensor([0, 2]) ? #此处有两个均值
normal = Normal(mean, 1)
c = normal.sample()
c_log_prob = normal.log_prob(c).exp()
print("c:", c)
print("c log_prob:", c_log_prob)

其中, sample()就是直接在定义的正态分布(均值为mean,标准差为std)上采样。
log_prob(value)是计算value在定义的正态分布(mean, std)中对应的概率密度函数的对数值。

概率密度函数,对其取log的公式分别如下:

返回值:
c: tensor([0.0274, 1.0780])
c log_prob: tensor([0.3988, 0.2608])
?

?

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-04-01 23:22:47  更:2022-04-01 23:23:21 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 12:51:35-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码