PostIT

[AI/Deep Learing] 인공지능을 위한 Deep Learning 준비(다차원 배열의 계산) - 3 본문

Deep Learning

[AI/Deep Learing] 인공지능을 위한 Deep Learning 준비(다차원 배열의 계산) - 3

shun10114 2017. 5. 31. 21:03

# [AI/Deep Learing] 인공지능을 위한 Deep Learning 준비(다차원 배열의 계산) - 3


이번에는 신경망에서 필요한 다차원 배열에 대해서 알아보겠습니다.


## 다차원 배열

숫자가 한 줄로 늘어선 것이나 직사각형으로 늘어 놓은 것, 3차원으로 늘어놓은 것, N차원으로 나열하는 것을 통틀어 다차원 배열이라고 합니다.


### 1. 다차원 배열을 구현해보겠습니다.


import numpy as np


a = np.array([1,2,3,4])

print(a)

    [1 2 3 4]



# 배열의 차원 수 확인하기.


np.ndim(a)

    1


# shape는 튜플을 반환


a.shape

    (4,)


a.shape[0]

    4


b = np.array([[1,2],[3,4],[5,6]])

print(b)

    [[1 2]

     [3 4]

     [5 6]]


np.ndim(b)

    2


b.shape

    (3, 2)


a = np.array([[1,2],[3,4]])

a.shape

    (2, 2)


b = np.array([[5,6],[7,8]])

b.shape

    (2, 2)



2차원 배열은 특히 행렬이라고 부르고 가로 방향을 행(row), 세로 방향을 열(column)이라고 합니다.


### 2. 행렬의 내적(행렬 곱)을 구현해보겠습니다.


# 행렬의 내적(행렬 곱) 구하기


np.dot(a,b)

    array([[19, 22],

           [43, 50]])



a = np.array([[1,2,3],[4,5,6]])

a.shape

    (2, 3)


b = np.array([[1,2],[3,4], [5,6]])

b.shape

    (3, 2)


# 행렬 a의 1번째 차원의 원소 수(열 수)와 행렬 b의 0번째 차원의 원소 수(행 수)가 같아야 계산이 됩니다.


np.dot(a,b)

    array([[22, 28],

           [49, 64]])


a = np.array([[1,2],[3,4],[5,6]])

a.shape

    (3, 2)


b = np.array([7,8])

b.shape

    (2,)


np.dot(a,b)

    array([23, 53, 83])




### 3. 신경망의 내적


편향과 활성화 함수를 생략하고 가중치만 갖는 신경망을 구현해보겠습니다.

# 신경망의 내적


x = np.array([1,2])

x.shape

    (2,)


w = np.array([[1,3,5],[2,4,6]])

print(w)

    [[1 3 5]

     [2 4 6]]


w.shape

    (2, 3)


y = np.dot(x,w)

print(y)

    [ 5 11 17]


# 다음에는 3층 신경망을 구현해보도록 하겠습니다.


## 참고

밑바닥부터 시작하는 딥러닝

Comments