周报 2025014~20250120transformers复现d_model = 512n_layers = 6n_heads = 8ff_hidden_dim = 2048
均使用贪心搜索。 原论文使用 beam=4, alpha=0.6 的束搜索原论文小模型bleu4分数为 28.4
lr
batch_size
epoch_cnt
final_loss
bleu4 score
description
0.000005
64
2
3.23
6
0.00005
64
2
1.95
23.7
0.00003
64
3
1.93
24.0
0.00001
64
4
2.08
21.5
0.0005
?
?
?
28.4
原论文
代码能力提升计划“良好的代码能力”究竟指什么不太懂,感觉在语境下指的是类似于项目能力的样子,能自行完成环境搭建和代码编写用来把积木搭出来。
环境搭建需要较强的信息检索能力,代码编写主要要求能理解代码运行逻辑(然后其实就可以写了吧……)。
可能的一些建议
针对有c以及python基础,面向对象语言基础的同学,如群里的“走肖木 ...
周报 20250107~20250113还在搞transformer使用已有的tokenizer进行数据预处理追踪向量形状多打注释。
multiheadattention 的输入与预期不同[seq_len, batch_size, d_model]
更改运算位置到GPU记得多打 .to(device)
有些mask是不需要的比如mem_mask
不合理的tgt设置导致出现模型偷看答案以及一开始没搞懂什么叫做 shift right
出现nan,尚未找到原因nan的原因是因为把attn_mask 的True和False写反了然后就出现模型极其容易梯度爆炸的问题,明天继续调……现在它能正常运行7个batch……然后梯度爆炸
下周计划在保持心态不爆炸的情况下搞定这个玩意
周报 20241231~20250106
啊?怎么一周过去了啊?怎么一年过去了
我做了啥DL学习方面 20241231~20250103目前在复现transformer阶段,很遗憾这周并没有很多时间搞这个。目前能够理解它的原理,但是代码实在不太(极其不)熟练,可能还需要一些时间调试并确保搞懂代码。主要困难来源于搞不懂torch中xx函数xx类构造方法参数之类的问题,以及一些愚蠢的手误。
回家跨了个年 20241231~20250101课程设计 20250102~20250107这周是数据结构课程设计时间,需要挺多时间用来写代码,本来是不需要很多的,但是我找了个好玩的题目,并且我的老师们热衷于看可视化,所以虽然算法部分只花了一天时间看论文,半天时间写代码,但花费了极其大量的时间学习可视化。过程中掌握了基础的networkx和manim两个可视化库的应用,制作了简单的图可视化以及3b1b同款视频来演示。感觉有点但不是非常浪费时间,一是这门课的分数大概还不错的,二是3b1b的视频风格真的很帅。
下周计划
明天(20240107)要被大巴拉出去认识实习并写个报告。
搞定transformer ...
复现transformerday1 配置环境&下载数据集123conda create --name transformer python=3.8 -yconda activate transformerpip install torch torchvision torchaudio
1pip install datasets
如果没有安装上
1conda install -c conda-forge datasets
然后配置环境变量修改到国内镜像
12pip install -U huggingface_hubexport HF_ENDPOINT=https://hf-mirror.com
数据集:https://huggingface.co/datasets/wmt/wmt14
运行代码下载
12345678from datasets import load_datasetds = load_dataset("wmt/wmt14", "de-en")print(ds)print(ds['train'][0:5])
数据集下载在了
1~/.cache/huggin ...
Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.
Quick StartCreate a new post1$ hexo new "My New Post"
More info: Writing
Run server1$ hexo server
More info: Server
Generate static files1$ hexo generate
More info: Generating
Deploy to remote sites1$ hexo deploy
More info: Deployment
大学生涯
未读使用vscode的remote-ssh拓展连接服务器
我不是很确定我是如何搞定这个的,但可能是这样:使用shell将conda加入path使其全局可用
创建名为code的目录,然后在vsc中打开它,就可以在vsc的终端中使用它了。
1mkdir code
123456789101112131415# init.sh# >>> conda initialize >>># !! Contents within this block are managed by 'conda init' !!__conda_setup="$('/usr/local/miniconda3/bin/conda' 'shell.bash' 'hook' 2> /dev/null)"if [ $? -eq 0 ]; then eval "$__conda_setup"else if [ -f "/usr/local/miniconda3/etc/profile.d/conda.sh" ]; then . "/usr/local/miniconda ...
当我打开手机准备写下这篇一周年祭时,我才发现已经十月八日了,距离我注册洛谷第一个账号已经过去了一年零八个小时。嗯,我本以为今天是十月七日,还有一天留给我仔细打磨一下这篇文章,会不会因为我高达89分的高考语文成绩使它拥有过多的语病和逻辑不顺。当然,已经晚了。我很早,大概是昨天,哦不,前天,或者几个月前,又或者是第一次认真对待算法竞赛时,就准备写下这样一篇小文,正式祭奠一下我那满是遗憾的日子。事实上,我没有机会写很多次这样的小文章,在我第一次知道算竞时,我已经18岁,大一了。我正坐在上海电力大学第一食堂三楼的观景椅上,穿着短袖短裤,有些冷,但还能接受,毕竟这里的景色,已经是这个学校中最漂亮的了。我是怎么来到这里的呢?我想我不太清楚,又很明白。我一直活在童年,一个梦幻的童年,在那里我是一个数学天才、围棋天才,是家人寄予厚望的后生,是梦想成为一名数学家的天真小朋友。我在稀里糊涂的日子里度过了人生中最重要的日子,它们即将又已然决定了我人生的主干道。我的中学生活是混沌的,我能够轻而易举地想到众多我所做的愚蠢的事情,其中绝大部分直到高二时某个早晨才终于被我发现,我就像一个醉汉,在梦幻中浪费了我的中学 ...
大学生涯
未读曼德布罗集 Mandelbrot Set程序基本情况和目标
曼德布罗集(Mandelbrot Set)是一个集合,定义如下:公式解释:对一个特定的复数 ,初始 ,经过 连续迭代后,如果 数列收敛于 附近(不是发散到无穷远),则 属于曼德布罗集。
一般可以认为,曼德布罗集中复数C的实部在 至 之间,虚部在 至 之间,在进行迭代计算中,如果 和原点 的距离超过 ,认为 趋向发散,如果连续经过 次迭代,距离仍不超过 ,则认为 趋向收敛(即 属于曼德布罗集)。
由于复数可以对应到坐标平面上的点,因此曼德布罗集可以直观地使用图形来展示,目标是可视化曼德布罗集。
主要功能模块迭代和迭代次数计算功能:输入点坐标,计算迭代次数。作业要求中已有几乎完整的迭代次数计算函数,但有一定错误和优化空间,需要阅读理解后进行更正和优化。
RGB映射功能:在Mand06作业中,要求支持256+种颜色且低值域敏感。考虑制作一个通解的RGB非对称映射函数。
图像文件生成功能:如题。作业要求中已有几乎完整的图像文件生成函数,但具体的像素点RGB设置依然需要根据不同的作业要求完成。
输入功 ...
以一种对新手比较友好的方式写了一下代码和注释*一定不是因为我是蒟蒻所以只能这么写(
这道题算是比较简单的字典树,理解了字典树就很好做。
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384#include<bits/stdc++.h>#define int long longusing namespace std;class trie {public: struct trie* nxt[26]; int cnt = 0; //给字典树放入新字符串 void ad(string s) { trie* tmp = this; for (char ch : s) { //cout<<ch; int i = ch ...
分治+笛卡尔树碎碎念原题(codeforces)
赛时这题wa了。赛后看到d题大多题解都是栈啊什么的,我没看懂,最终看到一个跟我思路完全相同的一个题解,检查发现没有特判如下的情况(其实是画蛇添足),魂都被气飞了。
1211
新人第一发题解wa了,第二发求过(
题解
首先观察整个数列 定义 是最小值的下标。显然你不能删除最小值,并且删除 左侧和 右侧的元素是独立事件。因此答案就是 和 答案的乘积。
那么如何处理一般化的数列 呢?显然我们只有两种选择:保留 ( 中最小值的下标),或者使用 或 (如果它们存在)来删除 。
定义 , 分别是 和 的答案。不论何时,我们可以有 种方法来保留 。如果 , 我们有 种方法来删除 。如果 , 我们有 种方法来删除 。如果 且 , 我们重复计算了删除 中所有元素的情况,因此我们需要再减去 。
原本我使用 min_element 求最小值,经群 u 提醒(指直接上手 hack )构造单调序列可以 tle ,因此我们需要预处理一个笛卡尔树。
原文 by TheScrasse
Solve the problem ...