2019_07_21学习记录

看了cs224n第一课的视频,感觉自己对很多东西的认识还只是停留在表面,只有将理论和实践相结合,才能真正明白其中的道理。

Reading

  1. Stanford CS224N: NLP with Deep Learning | Winter 2019 | Lecture 1 – Introduction and Word Vectors: 戳这里

  2. CS224n笔记2 词的向量表示:word2vec: 戳这里

  3. Python 中的 if name == ‘main‘ 该如何理解:

  4. 自然语言处理中CNN模型几种常见的Max Pooling操作: 戳这里

Coding

  • Python 中的 if name == ‘main‘ 该如何理解

简单的解释就是:if name == ‘main‘ 就相当于是 Python 模拟的程序入口。如果模块是被直接运行的,则代码块被运行,如果模块是被导入的,则代码块不被运行。

来看一个例子,我们现在有一个 elmo.py 的文件,内容如下:

1
2
3
4
5
6
say_Hi = "Hi BERT, I am ELMO!"

def main():
print(say_Hi)

main()

运行结果是:

1
Hi BERT, I am ELMO!

我们现在有另一个名为 bert.py 的文件,内容如下:

1
2
3
4
5
6
7
8
from elmo import say_Hi

def main():
print("haha, I am bert!")
print(say_Hi)
print("oh, nice to see you!")

main()

可以看到,在 bert.py 里面,我们调用了 elmo.py 里面的 say_Hi 变量,那我们来看看 bert.py 的执行结果:

1
2
3
4
Hi BERT, I am ELMO!
haha, I am bert!
Hi BERT, I am ELMO!
oh, nice to see you!

按照直觉是不是应该输出:

1
2
3
haha, I am bert!
Hi BERT, I am ELMO!
oh, nice to see you!

但是它将 elmo.py 里面的 main() 又执行了一遍,这是我们不希望看到的,这时候可以对 elmo.py 作如下改动:

1
2
3
4
5
6
7
say_Hi = "Hi BERT, I am ELMO!"

def main():
print(say_Hi)

if __name__ == "__main__":
main()

这时候再运行 bert.py,由于 elmo.py 是被导入的模块,因此它的 name 应该是它自己(elmo)而不是 main,因此if name == “main“返回的是 False, 它下面的代码块就不会被执行。只有当它是被直接运行的时候,才会执行if name == “main“下面的代码块。

-------------本文结束感谢您的阅读-------------

本文标题:2019_07_21学习记录

文章作者:丁鹏

发布时间:2019年07月22日 - 08:07

最后更新:2019年07月22日 - 12:07

原始链接:http://deepon.me/2019/07/22/2019-07-21学习记录/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

给博主投币,共同实现开源世界
0%