처음부터 만드는 Deep Learning 1장 Python 입문 비망록

소개



아무래도 오랜만입니다, 론입니다 (이름 바꾸었다).

연구나 인턴, 웹 개발로 기계 학습에 흥미가 나와 공부하고 싶다고 생각해 기계 학습을 공부하기로 했습니다.
아무래도 옴사의 「제로로부터 만드는 Deep Learning」이 초학자에게 추천이라고 하는 것이므로, 이쪽을 읽고 비망록을 써 가려고 생각합니다.
어떻게 파이썬 미경험에서도 읽을 수 있다든가.



세미나 발표이 기사를 보여주고 싶습니다

1장 파이썬 입문



이 책에서는 Python을 사용하여 구현하기 때문에 1 장에서는 Python 기초 문법에 대해 정리하고 있습니다.
멍청한 녀석을 메모합니다.

파이썬이란?



Python은 간단하고 가독성이 높으며 초학자에게 추천하는 언어입니다. 또한 수치 계산이나 통계 처리 등 라이브러리가 풍부하기 때문에 기계 학습, 데이터 과학 분야에서도 자주 사용됩니다.

수업



유저가 새로운 클래스를 정의해 독자적인 데이터형을 작성하는 경우, 이하와 같이 정의한다.

example.py
class クラス名
    # コンストラクタ
    def __init__(self, 引数, ...)
    # メソッド
    def メソッド名(self, 引数, ...)

생성자라고 하는 초기화를 실시하는 특수한 메소드가 있다. 클래스의 인스턴스가 작성될 때에 한 번만 불린다.
이하에 class.py의 실행예를 나타낸다.

class.py
class Man:
    def __init__(self, name):
        self.name = name
        print("Initialized")

    def hello(self):
        print("Hello " + self.name)

m = Man("Lon")
m.hello()
$ python class.py
Initialized
Hello Lon 

class.py에서는 Man이라는 클래스를 정의하고 m이라는 인스턴스(객체)를 생성한다.
생성자는 m 생성시 self.name을 "Lon"으로 초기화합니다.
이 변수를 인스턴스 변수라고합니다.

NumPy



NumPy란 수치 계산을 위한 라이브러리로, 수학 알고리즘이나 배열 처리를 간이하게 실시할 수 있다.

NumPy 배열 만들기



NumPy의 배열을 만들려면 목록을 인수로 사용하고 np.array()라는 메서드를 사용합니다.
이것은 NumPy 용 배열 (numpy.ndaray)을 만듭니다.
>>> x = np.array([1,2,3])
>>> print(x)
[ 1 2 3 ]
>>> type(x)
<class 'numpy.ndarray'>

NumPy의 N 차원 배열



NumPy는 다차원의 배열이 작성 가능하며, 2✕2의 2차원 배열이면 다음과 같이 작성할 수 있다.
행렬 A의 형상은 A.shape, 데이터형은 A.dtype에서 참조할 수 있다.
또한 수학에서 사용되는 행렬처럼 계산이 가능합니다.
>>> a = np.array([[1,2], [3,4]])
>>> print(a)
[[1 2]
 [3 4]]
>>> a.shape
(2, 2)
>>> a.dtype
dtype('int64')

요소 액세스



배열의 각 요소에 대한 액세스는 다음과 같이 수행됩니다.
>>> x = np.array([[1, 2], [3, 4], [5, 6]])
>>> print(x)
[[1 2]
 [3 4]
 [5 6]]
>>> x[0]    # 0行目
array([1, 2])
>>> x[0][1] # (0,1)の要素
2

for문을 사용할 수도 있다.
>>> for row in x:
...     print(row)
...
[1 2]
[3 4]
[5 6]

또한, 다음과 같은 액세스가 가능하다.
>>> x = x.flatten():      # xを1次元配列へ変換
>>> print(x)
[1 2 3 4 5 6]
>>> x[np.array([0, 2, 4]) # インデックスが0,2,4番目の要素
array([1, 3, 5])
>>> x[x>3]
array([4, 5, 6])

Matplotlib



그래프 묘화를 위한 라이브러리로 실험 결과나 데이터의 가시화가 가능하다.

간단한 그래프 그리기



그래프를 그리기 위해서는 matplotlib의 pyplot이라는 모듈을 이용한다.
sin 함수를 그리는 예가 아래에 나와 있습니다.
배열 x의 각 요소에 NumPy의 sin 함수 인 np.sin ()을 적용하고 x, y의 데이터 열을 plt.plot 메서드에 제공하여 그래프를 그립니다.
마지막으로 plt.show()로 그래프를 표시한다.

sin.py
import numpy as np
import matplotlib.pyplot as plt

# データの作成
# 0から6まで0.1刻みで生成 [0.1, 0.2, 0.3, ..., 5.9]
x = np.arange(0, 6, 0.1)
# 配列xの各要素にsin関数を適用
y = np.sin(x)

# グラフの描画
plt.plot(x, y)
# グラフの表示
plt.show()



pyplot의 기능



타이틀이나 x축 라벨의 부여 등, 다른 pyplot의 기능의 사용예를 이하에 나타낸다.

sincos.py
import numpy as np
import matplotlib.pyplot as plt

# データの作成
# 0から6まで0.1刻みで生成
x = np.arange(0, 6, 0.1)
y1 = np.sin(x)
y2 = np.cos(x)

# グラフの描画
# ラベル名指定
plt.plot(x, y1, label="sin")
# 破線の指定・ラベル名指定
plt.plot(x, y2, linestyle = "--", label="cos")
# x軸のラベル
plt.xlabel("x")
# y軸のラベル
plt.ylabel("y")
# グラフタイトル
plt.title('sin & cos')
# labelの名称表示
plt.legend()
# グラフ表示
plt.show()



이미지 표시



pyplot에는 이미지 표시 메소드 imshow()가 준비되어 있다.
이미지의 로딩은 다음과 같이 matplotlib.image 모듈의 imread()를 이용한다.

imshow.py
import matplotlib.pyplot as plt
from matplotlib.image import imread

# 画像の読み込み
img = imread('lena.png')
plt.imshow(img)

plt.show()



결론



Python은 연구라든지 경쟁 프로라든지, 화상 처리 100개 노크로 모르게 되면 조사한다고 느낌의 사용법이었기 때문에 의외로 몰랐던 사촌이 많았군요 웃음
다음은 드디어 2장의 퍼셉트론에 대해서 읽어 나가고 싶습니다.

좋은 웹페이지 즐겨찾기