- 博客(37)
- 收藏
- 关注
原创 LLM学习笔记(18)序列标注任务(测试模型阶段)
results作用初始化一个空的列表,准备存储后续推理结果。详细解析[]表示空列表。这个列表用于存储模型对输入句子的预测结果(如识别的实体信息)。在后续代码中,每次推理的结果会以字典的形式添加到这个列表中。遍历每个 token 的预测结果,逐一处理每个 token 的预测标签。识别非O类实体如果当前 token 的标签不是O(非实体),说明它是实体的一部分。记录实体起始和结束位置在一个实体内:实体的起始位置存储到start,对应实体的第一个 token。实体的结束位置存储到end。
2024-12-09 01:13:52
1154
原创 LLM学习笔记(17)序列标注任务(训练模型阶段)
self.classifier = nn.Linear(768, len(id2label)) # 线性分类器,768 为 BERT 输出维度logits = self.classifier(sequence_output) # 输出每个 token 的分类结果BertForNER是一个自定义的命名实体识别 (NER)模型类,继承了。它基于预训练的 BERT 模型构建,并在其顶部添加了用于分类的线性层,能够对每个 token 进行分类。
2024-12-08 05:51:49
1170
原创 LLM学习笔记(16)序列标注任务(准备数据阶段)
类定义:定义了一个继承自Dataset的自定义数据集类。__init__方法:初始化函数,用于加载数据文件,并调用load_data方法对数据进行处理。load_data方法:加载和处理数据Data = {}break文件读取打开数据文件,并逐行读取内容。open()函数open()是 Python 中用于打开文件的函数。,它返回一个文件对象,用于对文件进行读、写或其他操作。data_file这是一个变量,表示要打开的文件路径。
2024-12-06 21:46:52
947
原创 LLM学习笔记(15)LangChain、LlamaIndex、LlamaIndex
深度学习框架(如 PyTorch)确实更加“底层”,因为它是用于构建和训练神经网络模型的工具,而只是一个具体的神经网络架构,它需要通过深度学习框架(如 PyTorch 或 TensorFlow)来实现和训练。因此,Transformer 是在 PyTorch 之上实现的。LLM Agent是一种基于大语言模型(LLM)的智能代理系统,它不仅具备生成文本的能力,还能够通过执行复杂任务,充当主动交互的智能助手。虽然大语言模型(LLM)本身有着强大的文本生成和理解能力,但在实际应用中,单靠 LLM 本身是。
2024-12-05 21:11:52
1562
原创 LLM学习笔记(12)模型 Model
除了像之前使用AutoModel根据 checkpoint 自动加载模型以外,我们也可以直接使用模型对应的Model类,例如 BERT 对应的就是BertModel。模型加载的两种方式AutoModelAutoModelcheckpointcheckpointBertModelAutoModel。
2024-11-30 05:42:26
837
原创 LLM学习笔记(11)pipeline() 函数的幕后工作
Hugging Face 的 是一个高层封装工具,简化了许多繁琐的操作,使得开发者可以快速调用 NLP 模型完成复杂任务。以示例中的 情感分析任务 () 为例, 背后执行了以下三个主要步骤:在 Hugging Face 的 背后的 三个步骤之间(预处理、模型推理、后处理),并不是通过 JSON 文件传递数据。这些步骤是通过 Python 对象和内存中的数据直接传递的,使用的是 Python 和 PyTorch/TensorFlow 等深度学习框架的高效内存操作(如张量和字典),而不是文件操作。数据传递的
2024-11-30 04:39:18
1556
原创 LLM学习笔记(10)Transformers 库与 pipeline() 函数(下)
自动摘要是一种自然语言处理任务,旨在从长文本中提取主要信息并生成较短的摘要,同时尽量保留原文的核心内容和关键信息。分类:直接从原文中提取句子或短语。优点:结果可靠,句子语法正确。缺点:可能缺乏连贯性。模型通过理解原文,生成新的文本,可能与原文句子完全不同。优点:语言更自然,摘要更连贯。缺点:可能出现事实错误。Hugging Face 提供的使用的是生成式摘要模型。
2024-11-29 21:58:05
849
原创 LLM学习笔记(9)Transformers 库与 pipeline() 函数(中)
遮盖词填充是一种自然语言处理任务,目标是根据上下文预测被遮盖的单词。模型需要利用句子中其他已知的单词,填补未知的词位置。应用场景:工作原理:功能: 模型特点:功能:命名实体识别(Named Entity Recognition, NER) 是一种自然语言处理任务,用于从文本中识别并分类特定类型的实体,例如:应用场景:功能:默认模型:功能:默认模型:将子词(tokens)合并为完整实体()的原因主要是为了提高结果的可读性和实用性。以下是具体原因和详细解释:1. 提高可读性如果子词不合并,输出结果会像这样:
2024-11-29 07:28:28
1244
原创 LLM学习笔记(8)Transformers 库与 pipeline() 函数(上)
是由开发的一个广受欢迎的开源库,用于自然语言处理(NLP)和生成任务。通过这个库,用户可以很方便地加载预训练模型、微调模型并将其应用于各种任务。dict前缀提示(Prefix Prompt)是在生成式人工智能模型(如 GPT-2、GPT-3 等)中使用的一种输入方式,指的是通过提供一段开头的文本(称为提示词或 Prompt),让模型基于这段提示词生成后续的文本。前缀提示的作用提供提示词可以引导模型生成符合预期主题或语境的内容。例如,提示词为,模型会生成关于人工智能未来发展的内容。
2024-11-29 01:20:06
1403
原创 LLM学习笔记(7)Scaled Dot-product Attention
虽然 Attention 有许多种实现方式,但是最常见的还是 Scaled Dot-product Attention。
2024-11-25 18:34:18
512
原创 LLM学习笔记(6)微调列表 List fine-tunes、检索微调Retrieve fine-tune
这一行代码的核心作用是标记和引用用户微调完成的最终模型。它包含了基础模型的名称(
2024-11-24 02:34:02
954
原创 LLM学习笔记(5)微调 Fine-tuning
微调(Fine-tuning)是指在预训练模型(如 GPT)基础上,通过加入特定的数据对模型进行进一步训练,以优化其在某一特定任务或领域上的表现。它的主要目的是让模型更好地适应特定的应用场景。微调通常是开发机器学习和大语言模型应用中的一个部分。如果你需要一个高度定制化的模型,比如回答你特定行业的专业问题,这时候你可能需要通过微调来增强模型的表现。需要提供额外的定制数据集,需要一定的开发和部署能力。继续直接看相应JSON。
2024-11-19 20:16:05
1151
原创 LLM学习笔记(4)Embeddings 嵌入
是一种将文本、单词或其他数据转换为固定维度向量(数值表示)的技术。这些向量在机器学习和自然语言处理(NLP)任务中,用于捕捉输入数据的语义或特征,使得模型可以处理和理解。Embedding 将高维的、难以量化的输入(如文本)映射到一个低维向量空间,使数据更易于处理和比较。
2024-11-19 19:08:30
1096
原创 LLM学习笔记(3)补全Completions
Completions(文本/代码补全)是进行任务,例如自动完成代码段、生成文本内容、填充某个提示后的内容。promptChat Completions(会话补全):处理多轮对话。
2024-11-19 17:09:00
1589
原创 LLM学习笔记(2)会话补全Chat Completions、什么是JSON?
在自然语言处理(NLP)和大语言模型(LLM)中,token(标记)是文本的基本处理单元。大语言模型(如 GPT-3.5 和 GPT-4)将输入的文本分解为若干个token,然后以这些 token 为基础进行计算和生成内容。Token 的作用模型的基本输入单位大语言模型无法直接理解自然语言,而是将输入文本拆分成更小的单位(token),这些单位是模型理解和处理语言的基础。节约计算资源通过将文本切分为 token,可以更高效地对其进行计算和处理。计费单位。
2024-11-19 07:27:59
1349
原创 LLM学习笔记(1).env文件与Anaconda虚拟环境有何区别?
Node.js 是一种运行环境,具体来说,它是一个基于 Chrome V8 JavaScript 引擎的运行时环境,用于在服务器端运行 JavaScript 代码;或者说,Node.js 扩展了 JavaScript 的功能,让 JavaScript 不再仅仅是运行在浏览器中的脚本语言,而是能够在服务器端运行并处理后端任务的完整编程环境。API,应用程序编程接口)是一组规则和工具,允许不同的软件应用程序之间进行通信和数据交换。简单来说,API 是一种“桥梁”,让两个系统或程序能够相互对话。库是一组。
2024-11-17 06:18:23
1337
原创 小土堆学习笔记18:现有网络模型的使用和修改
是 PyTorch 中提供的 VGG 网络模型的模块,VGG 是一种经典的卷积神经网络架构。通过,我们可以方便地加载各种 VGG 模型(如 VGG11、VGG13、VGG16 等),这些模型可以用于图像分类、特征提取等任务。None使用 VGG 模型并不需要提前安装 ImageNet 数据集,但如果想使用预训练权重,这些权重是基于 ImageNet 数据集训练的,因此预训练模型的输出会有 1000 个类别。
2024-11-03 06:06:20
642
原创 小土堆学习笔记17:优化器
例如,在图像分类任务中,模型会不断更新参数,使得预测结果更接近真实标签,提高分类准确率。在示例中,CIFAR-10 是一个包含 10 类图片的常用数据集,每张图片都带有一个标签(target),用来表示图片的类别(如飞机、汽车、鸟等)。如果不清除旧的梯度,每次计算的新梯度会与之前的叠加,导致更新的方向不准确。来计算预测结果和真实标签之间的损失(误差),这个损失会作为训练信号传回去,指导模型如何调整参数,使得模型的预测更接近真实标签。是模型参数的梯度(偏导数),表示损失函数相对于各个参数的变化率。
2024-11-03 00:06:17
705
原创 小土堆学习笔记16:损失函数与反向传播
在机器学习和深度学习中,logits是指在最后的输出层之前,网络模型所计算出的未经归一化的值。通常用于分类任务中,logits 是网络的直接输出,可以理解为每个类别的“原始分数”。这些值还没有转换成概率,因此它们的范围可以是任意的正数或负数。在分类问题中,logits 通常通过Softmax函数转换为概率。使用Softmax可以将这些值映射到[0, 1]的范围,并且所有类别的概率之和为1,这样就得到一个概率分布,可以用来确定最可能的类别。例子: 假设一个模型输出的 logits 为。
2024-10-31 22:13:18
511
原创 小土堆学习笔记15:搭建小实战和Sequential的使用
容器时,它会按顺序依次通过每个网络层,最后得到输出。这样可以简化网络的定义,尤其适用于堆叠的简单层次结构。将多个卷积层、池化层和全连接层串联起来,使得输入数据可以自动按顺序通过这些层。是 PyTorch 中的一个容器模块,用于按顺序存放多个神经网络层。是整个模块,并不包含具体的类引用。因此,要使用这些类时需要通过。可以直接将这几个类导入,这样在代码中直接使用。为了简化代码和提高可读性,
2024-10-31 02:55:20
335
原创 小土堆学习笔记14:线性层及其他层介绍
正则化层(Normalization Layers)可以加快神经网络的训练速度,特别是批量归一化(Batch Normalization)。它通过规范化每一层的输入,使得数据在网络中的分布更加稳定,从而减小梯度消失和梯度爆炸的问题。这样可以使用更大的学习率,加快收敛速度。循环层(Recurrent Layers)主要用于序列数据(如文字、语音序列),因为它可以记住之前的信息。例如,LSTM或GRU是常见的循环层,用于自然语言处理(如文本情感分析)。
2024-10-29 20:59:31
944
原创 小土堆学习笔记13:非线性激活
非线性激活是指将线性变换后的输入数据进行非线性变换,帮助模型引入非线性因素。非线性激活的存在使得神经网络可以表示复杂的非线性关系,而不仅仅是线性组合。
2024-10-29 02:38:07
351
原创 小土堆学习笔记12:最大池化的作用
最大池化是从池化窗口(如 2x2、3x3)内选取最大的值作为输出,通常用于减少特征图的空间维度,同时保留显著的特征值。:因为池化操作会减少特征图的空间尺寸,使得模型的计算量和参数量降低,同时减少过拟合的风险,这就是所谓的“下采样”。
2024-10-29 01:21:18
579
原创 小土堆学习笔记11:卷积层
我观察到,在print(imgs.shape)的结果之中,in_channel=3,而到了print(output.shape)中,in_channel就变成了6。在代码中,定义了一个卷积层 ,如下:self.conv1 = nn.Conv2d(in_channels=3, out_channels=6, kernel_size=3, stride=1, padding=0)当你将输入 传递给 进行卷积操作时:output = tudui(imgs)此时,卷积层 会将 的形状从 转变为 :因此,
2024-10-28 04:37:53
203
原创 小土堆学习笔记8:DataLoader的使用
是 PyTorch 中的一个用于批量加载数据的工具。它的功能是从对象中逐批读取数据,方便地供神经网络进行训练或测试。它可以按设定的批次大小(batch size)从数据集中提取数据、处理数据的打乱(shuffle)、多线程加载等操作,从而提高数据加载的效率。:确实是指每次从中提取的数据量。例如,当时,每次会从中提取4张图片(以及对应标签)。:你的理解正确。这个参数决定了在每一个 epoch 开始时是否打乱数据集的顺序。打乱可以避免训练过程中数据顺序对训练结果的影响。:这个参数是用于指定数据加载的进程数量。
2024-10-27 16:46:31
1140
1
原创 小土堆学习笔记7:torchvision中的数据集使用
CIFAR-10 是一个经典的图像分类数据集,包含 10 个类别的 60,000 张彩色图像(每张图像 32x32 大小),其中有 50,000 张用于训练,10,000 张用于测试。这个数据集已经被很多计算机视觉的研究人员用于深度学习模型的训练和测试。是库中的一个内置数据集,用户可以很方便地通过它来加载 CIFAR-10 数据集(如代码所示)。
2024-10-25 16:39:03
1295
原创 小土堆学习笔记6:常见的Transforms(二)
注意一点:Resize(512)是将图像等比例缩放,使得图像的最短边为512像素,保持了原始的宽高比例。而Resize((512, 512))则是将图像强制缩放为512x512的正方形,无论图像的原始宽高比是什么。因此,如果你需要不改变比例的缩放,使用Resize(512),如果需要固定大小为正方形的图像,则使用Resize((512, 512))。
2024-10-20 10:57:00
755
原创 小土堆学习笔记5:常见的Transforms(一)
在 Python 中,__call__ 是一个特殊方法,允许类的实例像函数一样被调用。当一个对象被"调用"(即 object()),Python 会自动调用该对象的 __call__ 方法。这在简化接口和提高代码可读性方面非常有用。在小土堆的例子中,Person 类定义了一个 __call__ 方法。当你调用 person("Zhangsan") 时,__call__ 方法被触发,打印出 __call__ Hello Zhangsan。
2024-10-17 20:57:41
448
原创 小土堆学习笔记4:Transforms的使用
在 Python 中定义路径时,特别是在 Windows 上,路径中的反斜杠(\)会被当作转义字符(例如 \n 表示换行)。为了解决这个问题,你可以使用以下两种方法:使用双反斜杠(\\)来定义路径。使用原始字符串(在字符串前加 r),例如 r"D:\path\to\file"。你的路径可能没有生效的原因是转义字符被错误解释了。
2024-10-16 22:42:55
882
原创 小土堆学习笔记3:TensorBoard的使用(二)
在add_image的说明文件当中,我们可以看到它要求的“img_tensor (torch.Tensor, numpy.array, or string/blobname): Image data”,这些分别是什么?在 add_image 的文档中,img_tensor 可以是以下三种格式:1. torch.Tensor:这是 PyTorch 中常用的数据结构,表示多维矩阵。每个维度的值都是浮点数或整数,适合在神经网络中进行各种计算。
2024-10-15 23:08:36
812
原创 小土堆学习笔记2:TensorBoard的使用(一)
TensorBoard 是一个工具,它将模型的训练数据记录为事件文件,然后在 TensorBoard 界面上展示,方便开发者实时观察模型训练进展,可视化和监控机器学习、深度学习模型的训练过程。简而言之,就是将训练过程转化为图像,方便我们观察。以下是chatgpt给出的一些说法,可供参考:为什么要使用 TensorBoard?在深度学习中,模型的训练往往需要大量的迭代,训练过程可能需要数小时、数天甚至数周。
2024-10-14 21:56:31
1285
原创 小土堆学习笔记1:Dataset类代码实践
上一页中反复提到“类”,这究竟是什么东西?按我的理解(肯定不准确也不正式),class类就是某一个东西的共性,而且是等待被确认的共性。比如每台手机都有它自己的品牌、框架、价格等等属性,class类正是这些尚不确定的属性;而一旦确认了这些属性,就能够确认这到底是一台什么型号什么状态的手机,在确认了全部属性后就知道,这是一台Apple 16 Pro Max。抽象的不确定的共性就是类,具体的确定的个性就是示例。这个共性可以被用于多个编程目的,只不过某一个具体的编程行为还有它自己的独特性。
2024-10-13 18:48:46
1336
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人