文章目录

  • 自述
  • 代码出处
  • 目录
  • 代码
  • 1. Preparations
  • from _ _ future _ _ import
  • 2. Load & Preprocess Data
  • os.path.join函数
  • def自定义函数
  • with open as 读写文件


自述

我是编程小白,别看注册时间长,但从事的不是coding工作,为了学AI才开始自学Python。
平时就是照着书上敲敲代码,并没有深刻理解。现在想要研究chatbot了,才发现自己的coding水平急需加强,所以开这个系列记录自己一行行扣代码的过程。当然这不是从0开始的,只是把自己不理解的写出来,将来也可以作为资料备查。
最后还要重申一下,我没有系统学过编程,写这个系列就是想突破自己,各位大神请不吝赐教!

代码

1. Preparations

from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
from __future__ import unicode_literals

import torch
from torch.jit import script, trace
import torch.nn as nn
from torch import optim
import torch.nn.functional as F
import csv
import random
import re
import os
import unicodedata
import codecs
from io import open
import itertools
import math


USE_CUDA = torch.cuda.is_available()
device = torch.device("cuda" if USE_CUDA else "cpu")

from _ _ future _ _ import

先来说说单词两边的双下划线的含义:

官方解释:如果一个名字同时以双下划线开始和结束,则不会应用名称修饰,由双下划线前缀和后缀包围的变量不会被Python解释器修改。
但是Python保留了有双前导和双末尾下划线的名称,用于特殊用途。 这样的例子有,_ _ init _ _ 对象构造函数,或 _ _ call_ _ 它使得一个对象可以被调用。为了避免与将来的Python冲突,不要使用这个方法。

class chatBot:
    def __init__(self):
        self.__version__= 0.1
print("Chatbot Version:",chatBot().__version__)

得到结果

Chatbot Version: 0.1

还有其他下划线的用法可以参考这里https://www.runoob.com/w3cnote/python-5-underline.html

** from _ _ future _ _ import 代表了什么:**

_ _ future _ _ 应用在py2的代码中,为了让py2的代码能够使用py3的新特性

例如:
在python2.x的环境中使用下面语句,第三句就会报错。

from __future__ import print_function
print('Hello World!')
print 'Hello World!'

vit pytorch代码 pytorch attention代码怎么写_深度学习

2. Load & Preprocess Data

其中数据已经放入data目录中

corpus_name = "cornell movie-dialogs corpus" #语料库的名字
corpus = os.path.join("data", corpus_name)

def printLines(file, n=10):
    with open(file, 'rb') as datafile:
        lines = datafile.readlines()
    for line in lines[:n]:
        print(line)

printLines(os.path.join(corpus, "movie_lines.txt"))

os.path.join函数

corpus_name = "cornell movie-dialogs corpus" #语料库的名字
corpus = os.path.join("data", corpus_name)
print(corpus)

得到结果 data/cornell movie-dialogs corpus

def自定义函数

def 开始函数定义,紧接着是函数名,括号内部为函数的参数,内部为函数的 具体功能实现代码,如果想要函数有返回值, 在 expressions 中的逻辑代码中用 return 返回。

定义函数时的参数是形参,调用函数时的参数是实参。

def printLines(file, n=10):

with open as 读写文件

由于直接使用open() 读取文件还需要close()来关闭,所以引入with语句来自动调用close()

**readlines()**方法返回列表,包含所有的行

with open(file, 'rb') as datafile:
        lines = datafile.readlines()

文件的读写方式列表:

vit pytorch代码 pytorch attention代码怎么写_下划线_02