《PyTorch面试精华》


1 前言
    1.1  PyTorch安装

    1.2  显卡驱动的困惑

    1.3  CUDA安装注意事项

    1.4  cuDNN的介绍

    1.5  Pytorch Lightning介绍

    1.6  PyTorch学习之道

    1.7  PyTorch快速入门

    1.8  PyTorch调参之道

    1.9  PyTorch调参套件

    1.10  手动创建虚拟环境

2 深度学习之数学基础
    2.1  希腊字母解读

    2.2  梯度的物理意义

    2.3  图解梯度下降法

    2.4  图解梯度上升法

    2.5  自然梯度

    2.6  泰勒公式的介绍

    2.7  信息与信息熵

    2.8  重要性采样

    2.10  欧几里得范数

    2.11  特征值和特征向量

    2.12  似然函数的理解

    2.13  矩阵秩的深刻理解

3 PyTorch入门疑难点
4 PyTorch全局设置
    4.1  全局设置当前设备

    4.2  全局设置浮点精度

5 PyTorch GPU分布式训练
    5.1  PyTorch GPU基础操作

    5.2  DataParallel用法详解

    5.3  GPU分布式训练模型

    5.4  CUDA_VISIBLE_DEVICES

    5.5  device详细说明

    5.6  to(device)和.cuda()

    5.7  CUDA设备索引

    5.8  GPU设备索引

6 向量的基础与核心
    6.1  Tensor的组成与存储

    6.2  Tensor的grad属性

    6.4  Tensor的叠加

    6.5  禁用梯度计算

    6.6  向量的保存和加载

    6.7  参数向量

    6.8  叶子节点

    6.9  detach原理

    6.10  requires_grad属性

    6.11  Tensor与Numpy互换

    6.12  张量cat操作

    6.13  零维张量

    6.15  squeeze/unsqu...函数

    6.16  argmax和max的区别

    6.17  torch.as_tensor的应用

7 神经网络基础
    7.2  PyTorch计算图

    7.3  查看网络权重参数

    7.4  保存模型

    7.5  Adam相关面试题

    7.6  Train模式和Eval模式

    7.7  线性网络

    7.8  双线性网络

    7.9  惰性线性层

    7.10  PyTorch中的自动微分

    7.12  Dropout机制

    7.13  半精度训练

    7.14  Xavier初始化

    7.15  注意力机制

    7.16  Dataset数据处理

    7.17  StepLR学习率调度器

    7.18  词嵌入的理解

    7.19  TensorDataset的使用

    7.20  模型的保存与加载

    7.21  ModuleList和Sequential

    7.22  Batch Normalization介绍

8 计算机视觉基础知识
    8.1  通道的深刻理解

    8.2  1x1卷积的作用

    8.3  特征提取和可视化

    8.4  反卷积的推导

    8.5  理解卷积

    8.7  空洞卷积

    8.8  池化层的作用

    8.9  感受野与特征图

    8.10  NMS算法

    8.11  特征图尺寸计算

9 循环神经网络基础
    9.2  RNN的介绍

10 注意力机制
    10.1  位置编码的作用

    10.2  位置编码的种类

    10.4  Embedding本质理解

    10.6  Transformer VS CNN/RNN

    10.7  ELMo介绍

11 PyTorch归一化
    11.2  层归一化技术详解

12 激活函数相关内容
    12.1  激活函数简介

    12.2  万能逼近定理

    12.3  指数函数的学习

    12.4  Sigmoid函数的介绍

    12.5  Tanh函数的介绍

    12.6  Softmax函数的实现

    12.7  ReLU函数的介绍

    12.8  Leaky Relu函数的介绍

    12.9  ReLu与非线性的理解

    12.10  Parametric ReLU函数

    12.11  ELU函数介绍

    12.12  神经元死亡的问题

13 思考题的答案
    13.1  思考题的答案解密

词嵌入的原理和用法

创建时间:2024-10-20 更新时间:2024-10-20 阅读次数:1627 次

词嵌入的实现方式

实现词嵌入通常有两种做法:

(1)利用PyTorch自带的Embedding Layer;

(2)使用预训练模型,例如ELMo,Bert等,使词嵌入之间有更好的语义信息;

PyTorch词嵌入的主要的步骤

PyTorch词嵌入的主要的步骤如下所示:

1、准备好所要使用的语料库 2、构建字典,使语料库中的每个词都对应一个索引 3、利用Embedding Layer对输入的自然语言做embedding嵌入,作为网络的第一层 4、训练网络模型,更新第3步输入的权重

PyTorch词嵌入的函数介绍

torch.nn.Embedding(num_embeddings, embedding_dim, padding_idx=None, max_norm=None, norm_type=2.0, scale_grad_by_freq=False, sparse=False, _weight=None, device=None, dtype=None)
  • num_embeddings: 构建语料库字典的大小
  • embedding_dim: 每个词向要编码成向量的长度
  • padding_idx: 输出遇到此下标时用0填充(非必要参数)
  • max_norm:对词嵌入进行归一化,使他们的范数小于max_norm(非必要参数)
  • norm_type: max_norm在计算范数时的范数类型,如:可以选择1范数,2范数
  • scale_grad_by_freq:将通过小批量中单词频率的倒数来缩放梯度。这里的词频是指输入的句子。
  • sparse:如果为True,则与权重矩阵相关的梯度转变为稀疏张量。这里的稀疏张量是指方向传播的时候只更新当前使用此的权重矩阵,加快更新速度。这里和word2vec的负采样有相似之处

PyTorch词嵌入的应用举例

与制作 one-hot 向量时对每个单词定义一个特殊的索引类似,当我们使用词向量时也需要为每个单词定义一个索引。这些索引将是查询表的关键点。词嵌入被被存储在一个$|V|* D$的向量中,其中$D$是词嵌入的维度。词被分配的索引$i$,表示在向量的第$i$行存储它的嵌入。在下面代码中,从单词到索引的映射是一个叫 word_to_ix 的字典。

另外,需要注意的是,索引这张表时,你必须使用torch.LongTensor(因为索引是整数,不是浮点数)。

import torch
import torch.nn as nn

torch.manual_seed(1)

word_to_ix = {"hello": 0, "world": 1}
embeds = nn.Embedding(2, 5)  # 2 words in vocab, 5 dimensional embeddings
lookup_tensor = torch.tensor([word_to_ix["hello"]], dtype=torch.long)
hello_embed = embeds(lookup_tensor)
print(hello_embed)

输出结果为:

tensor([[ 0.6614,  0.2669,  0.0617,  0.6213, -0.4519]],
       grad_fn=<EmbeddingBackward0>)
本教程共117节,当前为第97节!
本教程最新修订时间为:2026-05-08 11:10:53