学习Python
文章平均质量分 77
学习Python笔记
Ankie(资深技术项目经理)
AI讲师,All in AI。前高通 资深技术项目经理,WiFi专家。
展开
-
Transformer模型-用jupyter演示逐步计算attention
学习transformer模型-用jupyter演示如何计算attention,不含multi-head attention,但包括权重矩阵W。原创 2024-03-30 00:20:05 · 711 阅读 · 0 评论 -
学习人工智能-3条Python命令,从零开始搭建GPT,minGPT by Andrej karpathy
3条Python命令,从零开始搭建GPT,minGPT by Andrej karpathy。如果你不是深度学习领域的专业人士,只是想感受一下它的魔力并初步尝试,那么最快速的入门方式就是在莎士比亚的作品上训练一个字符级别的GPT模型。首先,我们需要将其下载为一个单独(1MB)的文件,并将原始文本转换为一串大的整数流。生成结果 by CPU。生成结果 by GPU。原创 2024-03-10 00:30:00 · 1151 阅读 · 0 评论 -
Transformer模型-decoder解码器,target mask目标掩码的简明介绍
解码器层是对前面文章中提到的子层的包装器。它接受位置嵌入的目标序列,并将它们通过带掩码的多头注意力机制传递。使用掩码是为了防止解码器查看序列中的下一个标记。它迫使模型仅使用之前的标记作为上下文来预测下一个标记。然后,它再通过另一个多头注意力机制,该机制将编码器层的输出作为额外的输入。最后,它通过位置全连接前馈网络。在这些子层中的每一个之后,它都会执行残差相加和层归一化。原创 2024-04-10 00:15:00 · 1032 阅读 · 0 评论 -
Transformer模型-encoder编码器,padding填充,source mask填充掩码的简明介绍
encoder编码器层是对之前文章中提到的子层的封装。它接收位置嵌入的序列,并将其通过多头注意力机制和位置感知前馈网络。在每个子层之后,它执行残差连接和层归一化。因为要循环n次,所以封装到一起就比较方便。为了充分利用多头注意力子层的优势,输入标记会先通过一堆编码器层,然后再传递给解码器。这在文章开头的图片中用Nx表示,而上面的图片展示了这些堆叠的编码器如何将其输出传递给解码器层,这将在下一篇文章中讨论。原创 2024-04-09 00:15:00 · 1277 阅读 · 0 评论 -
Transformer模型-Feed Forward前馈网络,MLP和Relu激活函数的简明介绍:即2个线性层,中间通过Relu()连接。
位置感知Position-Wise前馈网络(FFN)由两个全连接层(fully connected dense layers,就是线性层(Linear Layer),或密集层(Dense Layer))组成,或者也可以称为多层感知机(MLP:multi-layer perceptron)。在层与层之间,使用ReLU激活函数,即max(0, X)。任何大于0的值保持不变,而任何小于或等于0的值都将变为0。它引入了非线性,有助于防止梯度消失。原创 2024-04-08 00:15:00 · 929 阅读 · 0 评论 -
Transformer模型-add & norm(残差连接&归一化)的简明介绍:残差连接,增加深度,不丢失初始的特征;归一化,避免梯度消失,减少运算
add&norm在transformer的每个子层都出现:add增加残差连接,可以增加深度,不丢失初始的特征。norm归一化,因为把原始的特征加回来,避免梯度消失,减少运算,进行归一化处理。原创 2024-04-07 00:15:00 · 826 阅读 · 0 评论 -
Transformer模型-Normalization归一化的简明介绍:将特征转换为可比较尺度的过程,一般是[0,1] or [-1,1]之间
一般而言,Normalization归一化是将特征转换为可比较尺度的过程。有许多方法可以对特征进行归一化。在机器学习中,对特征进行归一化是因为具有不同尺度的特征的模型需要更长的训练时间;这是因为梯度下降需要更多时间来收敛。根据Pinecone的说法,不进行归一化可能导致大的误差梯度最终爆炸,从而使模型不稳定。因此,在许多情况下,在将数据插入模型之前应该进行归一化。原创 2024-04-06 00:15:00 · 1433 阅读 · 0 评论 -
Transformer模型-数据预处理,训练,推理(预测)的简明介绍
Transformer模型-数据预处理,训练,推理(预测)的简明介绍。在继续探讨之前,假定已经对各个模块的功能有了充分的了解,我们从头梳理一遍流程。原创 2024-04-11 00:15:00 · 912 阅读 · 0 评论 -
Transformer模型-Multi-Head Attention多头注意力的简明介绍
今天介绍transformer模型的Multi-Head Attention多头注意力。通过之前文章,假定我们已经理解了attention;今天我们按顺序来梳理一下整合之后的顺序。原创 2024-04-05 00:30:00 · 1138 阅读 · 0 评论 -
Transformer模型-线性层(Linear Layer),全连接层(Fully Connected Layer)或密集层(Dense Layer)的简明介绍:通过训练得出最佳拟合线
线性层(Linear Layer)是神经网络中的一种基本层,也被称为全连接层(Fully Connected Layer)或密集层(Dense Layer)。线性层在神经网络中起到的作用是对输入数据进行线性变换。线性层的基本操作可以表示为:(y) 是输出向量。(W) 是权重矩阵,其中的每个元素都是可学习的参数。(x) 是输入向量。(b) 是偏置向量,也是一个可学习的参数。线性层会对输入数据 (x) 进行线性组合,并通过加上偏置 (b) 得到输出 (y)。原创 2024-04-04 00:30:00 · 1809 阅读 · 0 评论 -
Transformer模型-broadcast广播的简明介绍:拉伸张量
广播发生在将较小的张量“拉伸”以具有与较大张量兼容的形状,以便执行操作时。广播是一种有效执行张量操作而不创建重复数据的方式。原创 2024-04-02 00:15:00 · 190 阅读 · 0 评论 -
Transformer模型-softmax的简明介绍:转为概率分布,马太效应
softmax:常用于神经网络的输出层,以将原始的输出值转化为概率分布,从而使得每个类别的概率值在0到1之间,并且所有类别的概率之和为1。这使得Softmax函数特别适用于多类分类问题,其中模型需要预测输入样本属于多个可能类别中的哪一个。原创 2024-04-03 00:07:12 · 524 阅读 · 0 评论 -
Transformer模型-Positional Encoding位置编码的简明介绍
位置编码用于为序列中的每个标记或单词提供一个相对位置。在阅读句子时,每个单词都依赖于其周围的单词。例如,有些单词在不同的上下文中具有不同的含义,因此模型应该能够理解这些变化以及每个单词所依赖的上下文。一个例子是单词“trunk”。在一种情况下,它可以用来指大象用鼻子喝水;在另一种情况下,它可能指的是被闪电击中的树干。由于模型使用长度为d_model的嵌入向量来表示每个单词,因此任何位置编码都必须与之兼容。使用整数来表示位置似乎很自然,比如第一个标记为0,第二个标记为1,以此类推。然而,这个数字很快就会增长,原创 2024-04-01 00:30:00 · 908 阅读 · 0 评论 -
Transformer模型-Dropout的简明介绍:丢掉一些元素,防止过度拟合
Dropout 是一种神经网络正则化技术,它在训练时以指定的概率丢弃一个单元(以及连接)p。这个想法是为了防止神经网络变得过于依赖特定连接的共同适应,因为这可能是过度拟合的症状。直观上,dropout 可以被认为是创建一个隐式的神经网络集合。原创 2024-04-01 00:30:00 · 754 阅读 · 0 评论 -
Transformer模型-Input Embedding 嵌入层的简明介绍
今天介绍transformer模型的Input Embedding 嵌入层。嵌入序列需要分词器tokenizer、词汇表和索引,以及词汇表中每个单词的三维嵌入。Embedding a sequence requires a tokenizer, a vocabulary of words and their indices, and a three-dimensional embedding for each word in the vocabulary.分词器将序列分割为其标记tokens。创建分原创 2024-03-31 00:45:56 · 669 阅读 · 0 评论 -
Transformer模型-权重矩阵Wq,Wk,Wv的简明介绍
学习transformer模型的时候,权重矩阵Wq,Wk,Wv给我造成了很大的困扰:1,为啥要加W*?2,这个W*是从哪里来的?搜索了各种信息,消化理解如下:1,W*权重矩阵就是训练的目的,就是要找到合适的W*(weights)。2,W* 是函数nn.Linear初始化的,默认为随机数。经过不断地训练,更新,最终获得比较好的结果原创 2024-03-31 00:15:00 · 839 阅读 · 2 评论 -
人工智能:Pytorch,TensorFlow,MXNET,PaddlePaddle 啥区别?
学习人工智能的时候碰到各种深度神经网络框架:pytorch,TensorFlow,MXNET,PaddlePaddle,他们有什么区别?PyTorch、TensorFlow、MXNet和PaddlePaddle都是深度学习领域的开源框架,它们各自具有不同的特点和优势。原创 2024-03-30 00:21:53 · 930 阅读 · 0 评论 -
jupyter notebook的各种问题和解决办法
2,直接安装jupyter: pip install jupyter -i https://pypi.tuna.tsinghua.edu.cn/simple。找到jupyter的路径,比如以下路径,增加到环境变量里面。1,不要安装anaconda全家桶,速度慢,而且会安装另外一套python和库,导致代码跑不起来,容易crash。如果想跑某个具体的notebook,可以cmd定位到那个目录,然后再运行jupyter notebook。shift+enter:执行当前代码块并进入下一代码块。原创 2024-03-29 00:17:08 · 467 阅读 · 0 评论 -
Transformer模型-矩阵乘法;与点积 dot product(点积相似度 dot product Similarity)的关系;计算attention
Ankie的评论:因为点积可以计算相似值,或者距离,attention就拿来计算attention的相似值,或者距离。两个向量a = [a1, a2,…3、乘积C的第m行第n列的元素等于矩阵A的第m行的元素与矩阵B的第n列对应元素乘积之和。1、当矩阵A的列数(column)等于矩阵B的行数(row)时,A与B可以相乘。Ankie的评论:一个人是站着的,一个人是躺着的,站着的高度=躺着的长度。矩阵C的第一个元素,其实就是A的第一行和B的第一列做点积。2、矩阵C的行数等于矩阵A的行数,C的列数等于B的列数。原创 2024-03-29 00:16:48 · 364 阅读 · 0 评论 -
学习Dive into Deep learning:2.2 数据预处理,pandas
为了能用深度学习来解决现实世界的问题,我们经常从预处理原始数据开始, 而不是从那些准备好的张量格式数据开始。在Python中常用的数据分析工具中,我们通常使用pandas软件包。像庞大的Python生态系统中的许多其他扩展包一样,pandas可以与张量兼容。原创 2024-03-28 00:25:21 · 238 阅读 · 0 评论 -
Transformer模型-太神奇了,点积dot product成就ChatGPT!点积相似度dot product Similarity;计算attention
点积在数学中,又称数量积(dot product;scalar product),是指接受在实数R上的两个向量并返回一个实数值标量的二元运算。它是欧几里得空间的标准内积。两个向量a = [a1, a2,…, an]和b = [b1, b2,…, bn]的点积定义为:矢量模相乘在乘cosθ(θ 为矢量得夹角)a•b= |a| |b| cosθ;根据点积的正负值判断夹角的大小:点积为正夹角小于90°、点积等于零夹角等于90°、点积小于零夹角大于90°。原创 2024-03-28 00:18:55 · 428 阅读 · 2 评论 -
学习Dive into Deep learning:2.1数据操作,张量(tensor)
首先,我们介绍张量使用过Python中NumPy计算包的读者会对本部分很熟悉。无论使用哪个深度学习框架,它的张量类(在MXNet中为ndarray, 在PyTorch和TensorFlow中为Tensor)都与Numpy的ndarray类似。但深度学习框架又比Numpy的ndarray多一些重要功能: 首先,GPU很好地支持加速计算,而NumPy仅支持CPU计算;其次,张量类支持自动微分。这些功能使得张量类更适合深度学习。如果没有特殊说明,本书中所说的张量均指的是张量类的实例。原创 2024-03-27 01:30:00 · 877 阅读 · 0 评论 -
开源最强大语言模型:马斯克的Grok-1开源发布了;性能和参数;3步运行Grok
2024.3.17,马斯克的Grok-1正式在GitHub上开源发布了。在当前的开源社区里,Grok-1是基于transformer模型最强的实现,比之前Facebook开源发布的LLama 2要强不少。原创 2024-03-21 00:15:00 · 1673 阅读 · 0 评论 -
学习人工智能-用python进行训练步骤,DecisionTreeClassifier模型,Graphviz Interactive Preview 预览.dot文件
用python进行训练步骤:导入数据 import the data清理数据 clean the data把数据分为训练和验证部分 split the data into training and test sets创建一个模型 create a model训练模型 train the model创建预测 make predictions打分评估 score and evaluate.以DecisionTreeClassifier为例:原创 2024-03-20 01:00:00 · 1370 阅读 · 0 评论 -
学习python笔记:9,with,requests,os,set,list,enumerate,numpy.array
学习python笔记:9,with,os,set,list,enumerate原创 2024-03-19 03:00:00 · 805 阅读 · 0 评论 -
学习python笔记:8,随机数
内置随机数函数#掷骰子游戏。原创 2024-03-18 00:30:00 · 292 阅读 · 0 评论 -
学习python笔记:7,操作excel表格,生成柱状图,
注意xlsx的格式,wps另存为xlsx才可以,奇怪。#改为函数,可以做自动化处理,只要传入文件名即可。1,在终端里面安装openpyxl。原创 2024-03-17 00:30:00 · 560 阅读 · 0 评论 -
学习python笔记:6,模块,包
注意:包:1,创建目录 ecom2,在ecom里面创建空文件 __init__.py3,在ecom里面创建模块文件 shipping.py4,在shipping.py 里面增加函数。5,到目录外面 导入模块or函数。原创 2024-03-16 00:30:00 · 783 阅读 · 0 评论 -
学习python笔记:5,函数,类
注意:定义函数()后面要冒号:类定义class Point后面要冒号:原创 2024-03-15 00:30:00 · 707 阅读 · 0 评论 -
学习python笔记:4,列表,列表方法,元组,字典
是 Python 编程语言中的一种基础数据类型,用于存储有序的元素集合。这些元素可以是不同类型的数据,如整数、浮点数、字符串、甚至是其他列表(称为嵌套列表)。列表中的元素可以通过索引进行访问,索引从 0 开始。是 Python 中的一种数据结构,它是不可变的序列类型。这意味着一旦元组被创建,你就不能修改它的内容(例如添加、删除或更改元素)。列表(list)是 Python 中最基本且使用十分广泛的数据类型,它是有序的集合,下标是从 0 开始的。它实际上是一个包含多个列表的列表,每个内部列表代表矩阵的一行。原创 2024-03-14 00:30:00 · 1566 阅读 · 0 评论 -
学习python笔记:3,条件判断,while循环,for循环,嵌套循环
注意:condition后面有冒号:换行之后的代码要对齐。原创 2024-03-13 00:30:00 · 1630 阅读 · 0 评论 -
学习python笔记:2,数学运算,复合赋值运算符,内置数学函数
是一个复合赋值运算符,用于将左侧变量的值增加右侧表达式的值,并将结果重新赋值给左侧变量。这种运算符提供了一种更简洁的方式来更新变量的值,而不需要显式地写出完整的赋值语句。模块提供了许多有用的数学函数。在使用这些函数之前,你需要先导入。的值(即 8),然后将这个值重新赋值给变量。这条语句做了两件事情:首先,它计算了。-= 类似,不做举例了。原创 2024-03-12 00:30:00 · 176 阅读 · 0 评论 -
学习python笔记:1,安装Python,变量,接收用户输入,字符串创建,字符串格式化,字符串操作
在 Python 中,字符串(string)是一种不可变的数据类型,用于表示文本信息。这意味着您可以在变量中存储任何类型的数据,并且在程序的运行过程中可以更改其类型。这个函数会暂停程序的执行,等待用户在命令行中输入一些文本,然后按下回车键。Python 是一种动态类型语言,这意味着您可以在程序的运行过程中更改变量的类型。单引号和双引号在 Python 中是可以互换使用的,它们定义的都是字符串。,也叫做文档字符串(docstring),常用于函数的说明或模块的文档。您还可以将一个变量的值赋给另一个变量。原创 2024-03-11 00:30:00 · 1034 阅读 · 0 评论