PyTorch手写多头注意力
上回说到了 self-attention 的四种写法,这次更新一下
multi-head attention
的写法。multi-head attention 与 self-attention
最主要的不同是,我们输入的 X (Batch_size, seq_size, emb_size) 在
self-attention 的 QKV 均为 (Batch_size, seq_size,
emb_size), 而在 multi-head attention 中,我们需要将
emb_size 拆分为 num_head 和
head_dim。
多头注意力通过并行地运行多个独立的注意力机制来获取输入序列的不同子空间的注意力分布,从而更全面地捕获序列中潜在的多种语义关联。
代码如下所示:
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061import torchimport torch.nn...
attention的四重境界
LLM随着最近deepseek的热潮被推上了新的高峰,楼主在学习之中对于attention的理解也有着不同的见解,借此机会重新试着手写一下attention。 见山是山,Attention Atttetion 的公式如下所示,是大家都很熟悉的在Attention is all you need文章中的 Atttention(Q,K,V)=softmax(QKTdk)VAtttention(Q, K, V) = softmax(\frac{QK^T}{d_k})V Atttention(Q,K,V)=softmax(dkQKT)V 对于此的复现也是较为容易,我们可以构建一个Attention的类来根据公式进行复现 123456789101112131415161718192021222324252627282930313233343536373839404142434445import torchimport torch.nn as nnimport mathclass AttentionClass(nn.Module): def __init__(self,...
批量爬取bicnn文件
最近在下载文章数据的时候,发现了一个很让人感到头痛的数据,如下图所示:
可以看到,有很多的文件夹,每个文件夹点击进入也是不同的文件。大概估计可能有上百个,如此这版,显然是需要付出比较大的体力和精力,目前遇到的Bicnn的文件也基本是如此的,出去我的方便考量,写了一段爬虫,可能直接爬取目标文件夹下的所有文件。
再埋一个坑,我这里没有写断点续传,可能会在下一次补上,也许呢。
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263import osimport requestsfrom bs4 import BeautifulSoupfrom urllib.parse import urljoin# 目标URLbase_url =...
随想1
在所有生物中,唯有DNA可以通过遗传传递给后代继承某些特征。一旦DNA发生改变,它所有的后代都将继承改变后的DNA。转基因技术就是通过修改DNA来执行创造一个新的生物的指令,这些指令是以某种方式编程在DNA双螺旋结构里面的。
我有个程序员朋友,他喜欢从0开始写基础代码,思考方方面面的架构啊、设计模式啊重构啊,几乎每一行代码都是他亲历亲为的,我很佩服他。
而我本人的编程方式更加像是一种转基因编程法,大部分时间都在Github搜索别人写的代码(或者买程序员的付费资产包),找到适合自己要用的功能和微交互,之后像剪辑胶片🎞一样把代码复制到自己的工程里面,再跟Cursor查漏补缺,几乎所有代码都不是我自己写的,我最多修改一下文案和数值,但我很清楚增加的代码可以变得更好更出色。
为什么给你全奖免费读博?科学研究是什么?
前言:2024 年诺贝尔化学奖授予了 David Baker、Demis Hassabis 和 John
Jumper。一半授予 David Baker
以表彰其在计算蛋白质设计方面的贡献,他成功构建了全新的蛋白质;另一半授予
Demis Hassabis 和 John Jumper,因其开发的 AI 模型 AlphaFold2
解决了预测蛋白质复杂结构这一 50
年的难题。蛋白质是生命的化学工具,控制和驱动生命化学反应,此次发现具有巨大潜力,能帮助人们更好理解抗生素耐药性、塑料降解酶等,奖金额为
1100...
2024 年记
看到 Obsidian 的 CEO Steph Ango 写过...
辛顿的冬与春
零、负十字架的人
1947 年,在原子弹的余震中,新世界如大雪初霁,茫然而沉静。
那一年,《新闻周刊》发表了文章:《爱因斯坦,那个开启一切的人》。
那一年,爱因斯坦懊悔地说:“如果早知道德国人研发不出原子弹,我就不会为原子弹做任何事情!”
那一年,68
岁的爱因斯坦决定奔走全世界,讲述核战的末世图景,余生致力于推动核裁军。
那一年,世界没有为爱因斯坦停留半步,战略核威慑的骨相从虚空中浮现。
而后一个世纪,我们对社会最大胆的构想,对敌我最深刻的分别,一切光荣与梦想的枝蔓,都必须攀附于核威慑的穹窿之下。
一个试图破解万物奥秘的人,却因自己的求索背负了沉重的十字架,直到坟墓中也没卸下。
这是宇宙残酷的小玩笑。
正是在 1947
年的冬季,伦敦西南的温布尔顿,一个叫做杰弗里·辛顿的小男孩呱呱坠地。
站在辛顿和爱因斯坦的切近,你找不到他们的任何共同点,除了两人都获得了诺贝尔物理学奖。
相隔 102...
sceasy转h5ad到rds之后基因名字消失的解决方案
最近在做各种各样的物种的单细胞数据清洗,在清洗到某个数据的时候,用sceasy转格式从h5ad到rds,发现了一个问题,基因名字消失了。
没有再去看sceasy的源码,从源码去解决问题,只能是把原先的基因名字进行迁移。
12# 首先是是原先的基因的名字导出adata.var.to_csv('Mop_10X_nuclei_v3_Broad_forRDS.csv')
接着是rds的基因名字的赋予
123456789101112# 读取没有header的表格df <- read.table('/data/work/stTransfer/data/sc_cell/Mop_10X_nuclei_v3_Broad_forRDS.csv', header = FALSE)r = readRDS('/data/work/stTransfer/data/sc_cell/Mop_10X_nuclei_v3_Broad_forRDS.rds')counts= r@assays$RNA@countsmeta =...
记录一下hexo的博客迁移(物理)
换了新的电脑,一直以来自己的博客撰写的地址都是在电脑上面,自己的博客是基于hexo搭建的,所以需要将博客的文件迁移到新的电脑上面,这里记录一下迁移的过程。
直接把 node_modules
删除掉了,然后拷贝剩余的所有文件到新的设备上面。
拷贝之后第一项是安装 nodejs,地址如下:
https://nodejs.org/en/,下载安装即可,如果网络不方便,可以进行换源npm config set registry http://mirrors.cloud.tencent.com/npm/。
第二项是安装hexo,npm install -g hexo-cli,直接安装即可。
安装完成之后,进入到博客的文件夹,执行npm install,安装依赖。
安装依赖的过程中发现之后的安装的 packge.json
文件中的依赖有问题,淘宝的源换了,由原来的https://registry.npm.taobao.org换成了https://registry.npmmirror.com,所以需要将package.json文件中的源进行替换。
之后运行hexo...