-
查看cuda版本
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA
-
教程地址:pytorch学习手册
conda env list
# 创建虚拟环境并激活
conda create -n pytorch python=3.6
activate pytorch
# method1 :官网根据cuda版本的安装命令
# 方法1常常由于网络错误安装失败,添加清华源也不管用,比较推荐第二种方法,直接添加轮子
conda install pytorch torchvision cudatoolkit=10.0 -c pytorch
# method2 :安装Torchvision
conda install pytorch torchvision -c pytorch
# 安装pytorch
pip install https://download.pytorch.org/whl/cu100/torch-1.0.1-cp36-cp36m-win_amd64.whl
# 3. 验证是否安装成功,不报错就行
import torch
torch.__version__
import torchvision
# 4. 配置pytorch的jupyter notebook
#安装jupyterlab
pip install jupyterlab
# 创建pytorch的kernel
python -m ipykernel install --name pytorch --display-name "Pytorch for Deeplearning"
# 启动jupyter lab
jupyter lab
# 下面的步骤不是必要的
#切换回基础环境
activate base
#创建jupyter notebook配置文件
jupyter notebook --generate-config
## 这里会显示创建jupyter_notebook_config.py的具体位置
## 修改jupyter_notebook_config.py中的
c.NotebookApp.notebook_dir = '' 默认目录位置
c.NotebookApp.iopub_data_rate_limit = 100000000 这个改大一些否则有可能报错
# 在对应环境中查看核
jupyter kernelspec list
# 删除某个核
jupyter kernelspec remove z1
## 开始菜单中打开Jupyter Notebook 在New 菜单中创建文件时选择Pytorch for Deeplearning 创建PyTorch的相关开发环境了
这个清华源似乎也不是很管用,直接用whl安装吧:
参考博客
轮子下载网址
- 恢复jupyter notebook默认主题,anaconda prompt中
jt -r
恢复默认主题 - Torch创建的数据基本单位是tensor张量
- Linux查看cuda版本:
cat /usr/local/cuda/version.txt
- 清洗字符串模块
GLUA 任务
CoLA:
单句的二分类问题, 判断一个英文句子在语法上是不是可接受的.
SST-2
单句的二分类问题, 句子的来源于人们对一部电影的评价, 判断这个句子的情感.
MRPC
句子对来源于对同一条新闻的评论. 判断这一对句子在语义上是否相同.
STS-B
这是一个类似回归的问题. 给出一对句子, 使用1~5的评分评价两者在语义上的相似程度.
QQP
这是一个二分类数据集. 目的是判断两个来自于Quora的问题句子在语义上是否是等价的.
MNLI-m
语型内匹配。推断两个句子是意思相近, 矛盾, 还是无关的
MNLI-mm
跨语型匹配。推断两个句子是意思相近, 矛盾, 还是无关的
QNLI
也是一个二分类问题, 两个句子是一个(question, answer)对. 正样本为answer是对应question的答案, 负样本则相反
RTE
是一个二分类问题, 类似于MNLI, 但是数据量少很多
WNLI: 推断两个句子是意思相近, 矛盾, 还是无关的
AX: QA型图像数据库
RUN A MRPC DEMO USING BERT
- 下载GLUE数据之MRPC(MRPC: 句子对是否语义等价)数据
https://gist.github.com/W4ngatang/60c2bdb54d156a41194446737ce03e2e
认真读Git里面的readme:
python download_glue_data.py --data_dir glue_data --tasks MRPC
def main()中定义了命令行参数的意义
但好像由于对方服务器不稳定无法下载:
由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。
参考:https://www.jianshu.com/p/3d0bb34c488a
1)手动下载两份数据
2) 注释掉dev_ids.tsv的代码
3)python3 download_glue_data.py --data_dir glue_data --tasks MRPC --path_to_mrpc mrpc_ori_corpus
出现dev.tsv,test.tsv,train.tsv这三个文件,说明MRPC语料下载成功。
2. 源码中的model部分,需要学习一下transformer
transformer
attention 机制
做阅读理解时,带着问题去原文中某一部分寻找答案而不是全文都读一遍。注意力机制靠计算得到的相似度权重来选择与输入部分相关的内容。
(先定性地认识某个东西,再定量地了解它,记忆地会更长久)
传统的encoder-decoder的弊端导致逐步输入token时无法聚焦于input的部分内容而不是全部内容,而其并不具备此种选择机制。因此在decoder中加入获取input中特定部分的机制。
encoder-decoder模型(SEQ2SEQ)
简单认识:
[外链图片转存失败(img-IGWiBTjU-1568985514993)(./1568625040945.png)]
输入序列通过encoder转化为相同维度的稠密向量,解码将激活状态生成目标译文(机器翻译)。编码器要将整个序列的信息压缩到中间的固定长度语义编码中去,这样做的弊端:
- 输入序列过长时,前面的信息可能会被淡忘(被后面的信息覆盖),导致解码时信息不全面
- 语义向量可能无法表示整个序列的信息
- input和output之间无法有效对齐(不同语言的语法句式不同)
encoder-decoder其实是一个模型框架,包括:
- auto-encoding
- image-caption
- NMT
encoder-decoder可以是任意的文字、语音、图像、视频数据。显著特征是end2end学习的算法。
seq2seq任务:泛指sequence到sequence的映射问题。
seq2seq被定义为一个任务,而encoder-decoder模型框架是用于解决该任务的有力工具。可以理解为人读到一个sequence,在大脑中转化为Context,最终用自己的语言输出另一个sequence,那么注意力机制可以帮助我们记住输入序列重要的信息。
[外链图片转存失败(img-UQxZyf7x-1568985514995)(./1568690072339.png)]
run_classifier.py
on MRPC data
export BERT_BASE_DIR=./uncased_L-12_H-768_A-12
export GLUE_DIR=./glue_data
python run_classifier.py \
--task_name=MRPC \
--do_train=true \
--do_eval=true \
--data_dir=$GLUE_DIR/MRPC \
--vocab_file=$BERT_BASE_DIR/vocab.txt \
--bert_config_file=$BERT_BASE_DIR/bert_config.json \
--init_checkpoint=$BERT_BASE_DIR/bert_model.ckpt \
--max_seq_length=128 \
--train_batch_size=32 \
--learning_rate=2e-5 \
--num_train_epochs=3.0 \
--output_dir=./other
MRPC数据集格式:
[外链图片转存失败(img-VtgGmoNn-1568985514997)(./1568709347912.png)]
Microsoft Research Paraphrase Corpus(MRPC)语料库是释义识别的数据集,其中系统旨在识别两个语句是否相互为释义句。评估标准为分类准确度和 F1 分数。
一行包括Quality: 前后两个句子是否相互解释, 句子ID和句子本身,句子之间用空格隔开了。
配置pycharm远程同步服务器代码
https://www.cnblogs.com/xiongmao-cpp/p/7856596.html
linux find path option filename
eg:find ./anaconda3/envs/pytorch/ -name python 查找pytorch环境下的Python interpreter
: anaconda3/envs/pytorch/bin/python.exe
项目所在文件夹根目录如果更改
PY文件中import的自创建模块可能会报错
import sys
sys.path.append(项目绝对路径)
jupyter notebook add new kernel
# 创建jupyter notebook的TensorFlow kernel
pip install ipykernel
# python -m ipykernel install --user --name tensorflowenv --display-name "Python (tensorflowenv)"
# 查看kernel列表
jupyter kernelspec list
# 卸载指定kernel
jupyter kernelspec remove kernel_name
遇到了个问题,我的TensorFlow_1.6在导入TensorFlow模块时报错:ImportError: cannot import name 'abs'
解决方法
但重新安装后也没有解决,打算remove:conda env remove -n py3