Stanford cs224n 第三课: GloVe 代码解读
Makefile
Makefile是linux中特有的一种文件, 方便自动化编译。 GloVe的源码是用C语言编写的, 在linux的环境当中需要编写一个Makefile文件来编译。关于Makefile文件的介绍可移步Linux Makefile与make命令详细介绍。下面只解读程序当中用到的知识点。执行make的时候会生成 .o 文件, 之后会链接 link, 我也不是很懂 : ( 。
CC = gcc # 声明一个变量CC来表示 gcc #For older gcc, use -O3 or -O2 instead of -Ofast CFLAGS = -lm -pthread -Ofast -march=native -funroll-loops -Wno-unused-result BUILDDIR := build # 这里的 "=" 前面为什么会有一个 “:", 没有理解。 猜测和”=“的功能是一样的 SRCDIR := srcall: dir glove shuffle cooccur vocab_count # 第一个目标, 其后面所有的依赖项会执行dir :mkdir -p $(BUILDDIR) # 生成build文件夹, ”$"符号解析括号中变量的内容,也就是build glove : $(SRCDIR)/glove.c$(CC) $(SRCDIR)/glove.c -o $(BUILDDIR)/glove $(CFLAGS) # $(CC) = gcc shuffle : $(SRCDIR)/shuffle.c$(CC) $(SRCDIR)/shuffle.c -o $(BUILDDIR)/shuffle $(CFLAGS) cooccur : $(SRCDIR)/cooccur.c$(CC) $(SRCDIR)/cooccur.c -o $(BUILDDIR)/cooccur $(CFLAGS) vocab_count : $(SRCDIR)/vocab_count.c$(CC) $(SRCDIR)/vocab_count.c -o $(BUILDDIR)/vocab_count $(CFLAGS)clean: rm -rf glove shuffle cooccur vocab_count build
#!/bin/bash set -e # 设置环境, 发生错误就退出# Makes programs, downloads sample data, trains a GloVe model, and then evaluates it. # One optional argument can specify the language used for eval script: matlab, octave or [default] pythonmake # 编译Makefile中的内容 if [ ! -e text8 ]; then # 检查文件 text8 是否存在if hash wget 2>/dev/null; then # 这行代码没有理解到, 求大佬指点wget http://mattmahoney.net/dc/text8.zipelsecurl -O http://mattmahoney.net/dc/text8.zipfiunzip text8.ziprm text8.zip fiCORPUS=text8 VOCAB_FILE=vocab.txt COOCCURRENCE_FILE=cooccurrence.bin COOCCURRENCE_SHUF_FILE=cooccurrence.shuf.bin BUILDDIR=build SAVE_FILE=vectors VERBOSE=2 MEMORY=4.0 VOCAB_MIN_COUNT=5 VECTOR_SIZE=50 MAX_ITER=15 WINDOW_SIZE=15 BINARY=2 NUM_THREADS=8 X_MAX=10echo "$ $BUILDDIR/vocab_count -min-count $VOCAB_MIN_COUNT -verbose $VERBOSE < $CORPUS > $VOCAB_FILE" $BUILDDIR/vocab_count -min-count $VOCAB_MIN_COUNT -verbose $VERBOSE < $CORPUS > $VOCAB_FILE # 这行代码该怎么理解 echo "$ $BUILDDIR/cooccur -memory $MEMORY -vocab-file $VOCAB_FILE -verbose $VERBOSE -window-size $WINDOW_SIZE < $CORPUS > $COOCCURRENCE_FILE" $BUILDDIR/cooccur -memory $MEMORY -vocab-file $VOCAB_FILE -verbose $VERBOSE -window-size $WINDOW_SIZE < $CORPUS > $COOCCURRENCE_FILE echo "$ $BUILDDIR/shuffle -memory $MEMORY -verbose $VERBOSE < $COOCCURRENCE_FILE > $COOCCURRENCE_SHUF_FILE" $BUILDDIR/shuffle -memory $MEMORY -verbose $VERBOSE < $COOCCURRENCE_FILE > $COOCCURRENCE_SHUF_FILE echo "$ $BUILDDIR/glove -save-file $SAVE_FILE -threads $NUM_THREADS -input-file $COOCCURRENCE_SHUF_FILE -x-max $X_MAX -iter $MAX_ITER -vector-size $VECTOR_SIZE -binary $BINARY -vocab-file $VOCAB_FILE -verbose $VERBOSE" $BUILDDIR/glove -save-file $SAVE_FILE -threads $NUM_THREADS -input-file $COOCCURRENCE_SHUF_FILE -x-max $X_MAX -iter $MAX_ITER -vector-size $VECTOR_SIZE -binary $BINARY -vocab-file $VOCAB_FILE -verbose $VERBOSE if [ "$CORPUS" = 'text8' ]; thenif [ "$1" = 'matlab' ]; thenmatlab -nodisplay -nodesktop -nojvm -nosplash < ./eval/matlab/read_and_evaluate.m 1>&2 elif [ "$1" = 'octave' ]; thenoctave < ./eval/octave/read_and_evaluate_octave.m 1>&2elseecho "$ python eval/python/evaluate.py"python eval/python/evaluate.pyfi fi
转载于:https://www.cnblogs.com/yangkang77/p/8551902.html
Stanford cs224n 第三课: GloVe 代码解读相关推荐
- 左神算法中级班第三课[C++代码]
左神算法中级班第三课[C++代码] 第一题:流水线打包问题[阿里原题] 代码 第二题 代码 第三题:打印螺旋矩阵 代码 第四题 代码 第五题:判读aim是否在矩阵中 代码 第七题:topK问题 代码 ...
- 第三课.Linux代码编辑器
第三课目录 vi/vim vi/vim简介 vi的模式 vi在命令模式下的操作 vi在底线命令模式下的操作 Visual Studio Code Git git简介 关于git的故事 git的使用 v ...
- 0.0 目录-深度学习第三课《结构化机器学习项目》-Stanford吴恩达教授
文章目录 第五课 第四课 第三课 第二课 第一课 第五课 <序列模型> 笔记列表 Week 1 循环序列模型 Week 1 传送门 -> 1.1 为什么选择序列模型 1.2 数学符号 ...
- STM32学习心得三十四:外部SRAM原理及实验代码解读
记录一下,方便以后翻阅~ 主要内容: 1) IS62WV51216简介: 2) FSMC简介及相关寄存器介绍: 3) 相关实验代码解读. 参考手册: <STM32中文参考手册_V10>-第 ...
- 基于SegNet和UNet的遥感图像分割代码解读
基于SegNet和UNet的遥感图像分割代码解读 目录 基于SegNet和UNet的遥感图像分割代码解读 前言 概述 代码框架 代码细节分析 划分数据集gen_dataset.py UNet模型训练u ...
- glove中文词向量_Summary系列glove模型解读
一.Glove模型简介 语义文本向量表示可以应用在信息抽取,文档分类,问答系统,NER(Named Entity Recognition)和语义解析等领域中,大都需要计算单词或者文本之间的距离或者相似 ...
- Stanford CS224n 第一讲:深度自然语言处理
第一节课主要是介绍了NLP(尤其是Deep NLP)的背景知识. 主要有一下几点: 什么是NLP? NLP的应用 NLP的难点 Machine Learning vs. Deep Learning 接 ...
- 飞桨领航团AI达人创造营第三课笔记
第三课笔记目录 课后感慨 作业完成记录 制作数据集 训练模型 参考案例 代码解读 unzip git 数据集划分解读 文件选择 问题解决 链接指引 课后感慨 课程是越来越难了,有点难跟上了.但得益于群 ...
- 类ChatGPT逐行代码解读(2/2):从零起步实现ChatLLaMA和ColossalChat
本文为<类ChatGPT逐行代码解读>系列的第二篇,上一篇是:如何从零起步实现Transformer.ChatGLM 本文两个模型的特点是加了RLHF 第六部分 LLaMA的RLHF版:C ...
最新文章
- 组原-OS-政治截图
- MySQL百万级、千万级数据多表关联SQL语句调优
- Java 自带性能监控工具:监视和管理控制台jconsole的使用
- Linux下安装Tomcat启动报错
- 一个div 上下两行_纯CSS实现单一div的正多边形变换
- pytorch 笔记:gather 函数
- 从零开始玩转JMX(一)——简介和Standard MBean
- 业务库负载翻了百倍,我做了什么来拯救MySQL架构
- java连接ldap验证,验证用户使用LDAP登录
- MyBatis的学习总结:调用存储过程【参考】
- 一行Python代码就可以下载任意网站视频,零基础小白也能轻松学会
- 第一天:wp7多功能播放器 设计一界面设计
- 简述 JPA 与 Spring Data JPA 与 Hibernate
- 一个很简单的问题:遍历int数组并删掉所有偶数
- 深度学习——CNN、RNN、DNN汇总
- 如何在EXCEL中只复制可见单元格(忽略隐藏行/列)
- 数据恢复软件的原理是什么?
- 视频教程-以太坊区块链实战视频教程(全球同步升级)-区块链
- Android静态库和动态库的区别
- HighCharts柱状图显示百分比