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 代码解读相关推荐

  1. 左神算法中级班第三课[C++代码]

    左神算法中级班第三课[C++代码] 第一题:流水线打包问题[阿里原题] 代码 第二题 代码 第三题:打印螺旋矩阵 代码 第四题 代码 第五题:判读aim是否在矩阵中 代码 第七题:topK问题 代码 ...

  2. 第三课.Linux代码编辑器

    第三课目录 vi/vim vi/vim简介 vi的模式 vi在命令模式下的操作 vi在底线命令模式下的操作 Visual Studio Code Git git简介 关于git的故事 git的使用 v ...

  3. 0.0 目录-深度学习第三课《结构化机器学习项目》-Stanford吴恩达教授

    文章目录 第五课 第四课 第三课 第二课 第一课 第五课 <序列模型> 笔记列表 Week 1 循环序列模型 Week 1 传送门 -> 1.1 为什么选择序列模型 1.2 数学符号 ...

  4. STM32学习心得三十四:外部SRAM原理及实验代码解读

    记录一下,方便以后翻阅~ 主要内容: 1) IS62WV51216简介: 2) FSMC简介及相关寄存器介绍: 3) 相关实验代码解读. 参考手册: <STM32中文参考手册_V10>-第 ...

  5. 基于SegNet和UNet的遥感图像分割代码解读

    基于SegNet和UNet的遥感图像分割代码解读 目录 基于SegNet和UNet的遥感图像分割代码解读 前言 概述 代码框架 代码细节分析 划分数据集gen_dataset.py UNet模型训练u ...

  6. glove中文词向量_Summary系列glove模型解读

    一.Glove模型简介 语义文本向量表示可以应用在信息抽取,文档分类,问答系统,NER(Named Entity Recognition)和语义解析等领域中,大都需要计算单词或者文本之间的距离或者相似 ...

  7. Stanford CS224n 第一讲:深度自然语言处理

    第一节课主要是介绍了NLP(尤其是Deep NLP)的背景知识. 主要有一下几点: 什么是NLP? NLP的应用 NLP的难点 Machine Learning vs. Deep Learning 接 ...

  8. 飞桨领航团AI达人创造营第三课笔记

    第三课笔记目录 课后感慨 作业完成记录 制作数据集 训练模型 参考案例 代码解读 unzip git 数据集划分解读 文件选择 问题解决 链接指引 课后感慨 课程是越来越难了,有点难跟上了.但得益于群 ...

  9. 类ChatGPT逐行代码解读(2/2):从零起步实现ChatLLaMA和ColossalChat

    本文为<类ChatGPT逐行代码解读>系列的第二篇,上一篇是:如何从零起步实现Transformer.ChatGLM 本文两个模型的特点是加了RLHF 第六部分 LLaMA的RLHF版:C ...

最新文章

  1. 组原-OS-政治截图
  2. MySQL百万级、千万级数据多表关联SQL语句调优
  3. Java 自带性能监控工具:监视和管理控制台jconsole的使用
  4. Linux下安装Tomcat启动报错
  5. 一个div 上下两行_纯CSS实现单一div的正多边形变换
  6. pytorch 笔记:gather 函数
  7. 从零开始玩转JMX(一)——简介和Standard MBean
  8. 业务库负载翻了百倍,我做了什么来拯救MySQL架构
  9. java连接ldap验证,验证用户使用LDAP登录
  10. MyBatis的学习总结:调用存储过程【参考】
  11. 一行Python代码就可以下载任意网站视频,零基础小白也能轻松学会
  12. 第一天:wp7多功能播放器 设计一界面设计
  13. 简述 JPA 与 Spring Data JPA 与 Hibernate
  14. 一个很简单的问题:遍历int数组并删掉所有偶数
  15. 深度学习——CNN、RNN、DNN汇总
  16. 如何在EXCEL中只复制可见单元格(忽略隐藏行/列)
  17. 数据恢复软件的原理是什么?
  18. 视频教程-以太坊区块链实战视频教程(全球同步升级)-区块链
  19. Android静态库和动态库的区别
  20. HighCharts柱状图显示百分比

热门文章

  1. 029# Adempiere采购模组-从采购申请创建采购订单
  2. 扫描分发Apriori算法学习(一)
  3. AgileEAS.NET平台开发实例-药店系统-准备开发环境(上)
  4. String 类中怎么出现此类问题?
  5. 使用Docker搭建Elasticsearch集群环境
  6. Objective-C 执行外部命令
  7. 启动和停止MySQL服务
  8. ubuntu 安装 Terminator
  9. iOS高效开发必备的10款Objective-C类库
  10. WinRar 代替之选:7-Zip+7zSfxTool