第七节自注意力机制
常见的输入每个词对应一个编码,中文中对应差不多两万多个编码 这就组成了RNNRNN需要考虑前后关系,故需要一个从头穿到尾的传家宝–记忆单元 但其弊端是,如果想要的信息之间距离过远,,RNN就会在传家宝里放一些没有帮助的东西。故引出了LSTM LSTM 但缺点是太慢了,还是需要一个一个读入。故引出了自注意力 自注意力 这样就解决了前两个模型需要查看每一个字导致时间过长的问题。自注意力是完全并行的! 而且自注意力在qkv处理过程中维度不变 自注意力机制在干嘛?自注意机制就是让句子里的每个词,都去 “看” 句子里的其他词,然后把有用的信息 “拿回来”,帮助自己变得更聪明。 QKV是干嘛的?“他告诉小明,他明天要去北京。” Q(Query):我要找谁?我想知道什么?我这个词在寻找和我相关的词时,用什么特征去匹配?是一个 “搜索条件”、一个 “问题”、一个 “需求描述” 比如 “他” 的 Q 可能是:“我是一个代词,我需要找到一个人来指代。” K(Key):我是谁?我能提供什么信息?我这个词能提供什么信息?别人可以用什么方式找到我?是一个 “标签”、一个 “索引”、一个 “联系方式”...
第八节Bert实战
对于输入需要分词输入的序列前面需要加上cls,,后面需要加上seq。 在这个基础上如果凑不够input的值,,则会填充两个padding。 输入被分成三部分 Bert的参数 768在Bert中有什么特殊含义?为什么特征都是768的?相当于一个约定俗成的值,因为这是Bert-base版本(折中了参数量和效率)中,每个 token(词 / 字)经过 Embedding 层和 Transformer 层后,输出的向量维度是 768 维。那为什么是768?BERT-base 的 Transformer 层有12个注意力头(num_attention_heads=12),而注意力机制要求hidden_size必须能被注意力头数整除(方便将 768 维向量均分给到 12 个头):768÷12=64。每个注意力头负责处理 64 维的子向量,这是 Transformer 注意力机制的核心要求(均分维度保证计算效率)。 embedding层的三个输入分别是什么21128是指中文词表有21128种 2是指segment——embedding只有01两种,所以是2 512是指模型...
第五节分类任务_食物识别实战
随机种子123456789101112def seed_everything(seed): torch.manual_seed(seed) torch.cuda.manual_seed(seed) torch.cuda.manual_seed_all(seed) torch.backends.cudnn.benchmark = False torch.backends.cudnn.deterministic = True random.seed(seed) np.random.seed(seed) os.environ['PYTHONHASHSEED'] = str(seed)###############################################seed_everything(0)############################################### 数据部分在引用路径时,\被识别成转义字符怎么办?在前面加r 12path = r"C:\Users\a&...
第六节特征提取与无监督学习
核心问题模型的训练需要梯度,梯度从loss中得到,所以怎么获得pred和y之间的loss就是关键。 无监督学习的方法机器学习:PCA(主成分分析)、聚类 深度学习:生成对抗网络、自监督学习 对比学习把自己和自己的增广图像作为一对 对抗生成网络 生成式自监督
conda操作
基本操作首先的首先,这个不是在cmd里运行的,而是在Anaconda Prompt 创建虚拟环境在终端输入(注意”python=”没有空格) 1conda create -n 环境名称 python=想要的版本 激活虚拟环境1conda activate 环境名称 删除虚拟环境1conda env remove -n 环境名称 --all 或者直接在E:\Anaconda_new\envs里删除更快 查看所有系统环境1conda env list pychram中使用创建好了怎么配置?右下角添加解释器,Conda环境,现有环境,解释器右边的三个点,E:\Anaconda_new\envs\环境名称\python.exe || E:\conda_envs\bysj\python.exe 读论文怎么配置?方法一(常用)PyCharm底部终端,cd到项目根目录,pip install -r requirements.txt 方法二用Anaconda的prompt,cd到项目根目录,pip install -r requirements.txt C盘...
分类任务
本日志建立在模型已经能运行的情况下,记录对前后端的修改 移除关于界面删除路由配置中的 About 路径(src/router/index.ts)。 1234567// import About from "@/views/About.vue"; // { // path: '/about', // name: 'about', // component: About // 实际的组件 // }, 去除头部导航中的“关于”菜单项(src/components/Header.vue) 1<li itemprop="name" >-->
第四节分类任务
理论问题环节为什么我们需要卷积神经网络?因为全连接神经网络的参数量过大,容易导致模型过拟合 输入必须是3 * 256 * 256吗不一定,这是一种非常经典且常用的输入尺寸但它并非 CNN 的强制要求,这个尺寸主要来源于早期的经典预训练模型,如AlexNet、VGG、ResNet 等经典预训练模型它们在训练时默认采用了 224×224 的图像分辨率,而 3 代表 RGB 彩色图像的 3 个通道(通道数 × 高度 × 宽度,即 C×H×W)。 每次卷积特征图的尺寸都变小了,如何保持尺度不变呢?零填充 更大的卷积核和更多的卷积核层数意味着什么?更大的卷积核意味着更大的感受野, 更多的卷积核层数,就像给模型升级成 “多级侦探”,能从表面细节挖到深层本质,处理更复杂的任务;但层数太多会出现 **“信号断联”的问题(梯度消失 / 爆炸) 梯度消失:指令要经过很多层侦探(层数多),每传一层就被削弱一点,传到最前面的新手侦探时,指令已经弱到听不见了(梯度趋近于 0),新手侦探没法纠正自己的错误,模型学不会。 梯度爆炸:反过来,指令每传一层就被放大一点,传到前面时已经变成 “噪音”(梯...
with的用法
用法一:文件如果不使用with,我们应该如何打开一个文件?12345678910try: # 1. [进入] f = open('a.txt', 'r', encoding="utf-8") # 2. [执行] print(f.read())finally: if f: # 3. [退出] f.close() with在这里就起到一个封装try和finally的作用,finally的作用就是如果文件在io过程中产生了错误,也能正常执行f.close()安全关闭文件 写成with语句12with open("a.txt", "r", encoding="utf-8") as f: print(f.read()) 即把open(“a.txt”, “r”, encoding=”utf-8”)的结果命名为f,再执行print(f.read())的语句块。 用法二:pytorch梯度管理with...
第三节深度学习项目实战
首先我们要新建一个类,一个类里面要有三部分 第一部分:初始化第一,打开文件123456def __init__(____________): with open(file_train,"r") as f: csv_data = list(csv.reader(file_train)) column = csv_data[0] x = csv_data[1:, 1:-1] y = csv_data[1:, -1] 一、with open(file_train,”r”) as f中的with和as f是干嘛用的?with:自动关闭文件。相当于open()打开而自动使用close()关闭。若只open不close,会导致文件一直被程序占用,其他程序无法打开导致内存泄漏。 as f:相当于给文件命名 二、为什么需要list()?因为csv.reader()的作用是按照行分隔符(“/n”)和列分隔符(“,”)做切割,如 但这个功能是一个迭代器,只能单向遍历一次,不能索引,故需要转换成list以便...
