Dragon Arrow written by Tatsuya Nakaji, all rights reserved animated-dragon-image-0164

ゼロから作る Deep Learning 第2章

イメージ
May 09, 2019

ゼロから作る Deep Learning』第2章 勉強メモ


# coding: utf-8
import numpy as np


def AND(x1, x2):
x = np.array([x1, x2])
w = np.array([0.5, 0.5])
b = -0.7

# { |w * x|インデックスごとで掛け算 [0.5, 0.5] * [x1, x2] => [0.5 * x1, 0.5 * x2] }
# { |np.sum(w*x)| w*xの各要素を全てたす (0.5 * x1) + (0.5 * x2) }
tmp = np.sum(w*x) + b
if tmp <= 0:
return 0
else:
return 1

if __name__ == '__main__':
for xs in [(0, 0), (1, 0), (0, 1), (1, 1)]:
y = AND(xs[0], xs[1])
print(str(xs) + " -> " + str(y))

実行結果

(0, 0) -> 0

(1, 0) -> 0

(0, 1) -> 0

(1, 1) -> 1


* if __name__ == '__main__' について

Pythonファイルのモジュール名が文字列で入っている __name__ という特殊な変数があります。

  • $ python hello.py のようにスクリプトからファイルを実行すると__name__ 変数は自動で "__main__" という文字列になる
  • import hello した:hello.py 内部で __name__"hello" という文字列になる


つまり...インポートしてもファイルが勝手に実行されない!!

(例)

hello.py

def main():
    print("Hello")

main()
$ python hello.py
Hello

外部から import hello という風に hello.py をインポートした際にも 「Hello」と表示されてしまいます

>>> import hello  # この時点で「Hello」が表示されてしまう
Hello
>>>


if __name__ == "__main__": を加えると

hello.py

def main():
    print("Hello")
if __name__ == "__main__":
    main()

このif文の内部は import された際には実行されません。

>>> import hello
>>>


以上!!