pytorch安装 | GLUA任务 | Bert MPRC demo

  1. 查看cuda版本C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA

  2. 教程地址: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内核的添加和删除

  1. 恢复jupyter notebook默认主题,anaconda prompt中jt -r恢复默认主题
  2. Torch创建的数据基本单位是tensor张量
  3. Linux查看cuda版本:cat /usr/local/cuda/version.txt
  4. 清洗字符串模块

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

  1. 下载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转化为相同维度的稠密向量,解码将激活状态生成目标译文(机器翻译)。编码器要将整个序列的信息压缩到中间的固定长度语义编码中去,这样做的弊端:

  1. 输入序列过长时,前面的信息可能会被淡忘(被后面的信息覆盖),导致解码时信息不全面
  2. 语义向量可能无法表示整个序列的信息
  3. input和output之间无法有效对齐(不同语言的语法句式不同)

encoder-decoder其实是一个模型框架,包括:

  1. auto-encoding
  2. image-caption
  3. 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

删除指定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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值