[3일 차] Deep learning, TensorFlow, Keras

Kimsoohyun·2022년 2월 19일
0
post-thumbnail

※ Notification
본 포스팅은 작성자가 이해한 내용을 바탕으로 작성된 글이기 때문에 틀린 부분이 있을 수 있습니다.
잘못된 부분이 있다면 댓글로 알려주시면 수정하도록 하겠습니다 :)

Intro

오늘, 리뷰를 끝내고 이제부터 본격적인 Tensorflow 강의가 시작되었다.
Deep learning 기본 architecture를 기억한다면 어려울게 없다고 하셨다.

code consistency

수업에 앞서 lambda 함수 관련 질문을 받으셨다고 Code consistency에 대해서 간략하게 설명해주셨다.

notation

프로그래밍에서 중요한 것이 Code consistency을 유지하는 것인데, 이는 notation을 동일하게 쓴다는 것을 의미한다.

# 1번 방식
if {
	code
}

# 2번 방식
if
{
	code
}

위와 같이 if문을 사용할 때 괄호를 다음과 같은 2가지 방식으로 사용할 수 있는데, 일관성 있게 한 가지의 방식으로만 사용해야된다는 것이다. 여담으로 나는 1번 방식을 선호하는 편이다.

회사나 협업에 있어서 Coding ruleGuideline이 존재할테고 이를 지키는 것이 중요하다고 하셨다.
개인적으로도 관심이 많은 부분이라서 적어보았다.

In python

python을 사용할 때도 몇 가지 Rule(?)이 있다.

list comprehension

평소 list comprehension이 익숙치 않았었는데 강의에서 언급된 김에 정리해봤다.
[(식) for (변수) in (리스트)]

example

size = 10
arr = [i * 2 for i in range(size)]

labmda

f = lambda x = W : func(W)
numerical_derivative(f, W)

함수 f가 바뀌어도 numerical_derivative(f, W)의 코드는 변하지 않는다.
따라서 Code consistency를 유지할 수 있고, 이는 코드의 이해를 돕고 수정의 편리함을 준다.

Deep learning

Deep learning에는 입력층, 은닉층, 출력층이 있다.

  • 입력층 - 정답을 만들어주는 data의 개수 (1개의 label을 만들기 위해 입력되는 data의 수)
  • 은닉층 - 하이퍼파라미터
  • 출력층 - 정답의 개수 (label 종류수)

one hot encoding

One hot encoding이란 loss를 계산하기 위해 정답을 행렬로 표시하는 방법이다.

activation function

one hot encoding에 대해 알아보기 전에 DL에서 왜 one hot encoding이 쓰이는지부터 알아보고 가자.

sigmoid, relu, tanh 등의 activation function에는 변곡점이 1개밖에 없다.
따라서 2개의 데이터만 분류할 수 있다.

그렇다면 다항 분류의 경우에는 어떻게 할 것인가?
출력 노드를 정답의 개수만큼 만들어주고 그 중에 가장 큰 값의 index를 정답으로 인식 시키면 된다.
때문에 YY가 행렬로 표현되게 되는데 여기서 문제가 발생한다.

One hot encoding

loss를 계산하기 위해서 YTY-T를 해야되는데 앞서 서술했듯이 YY가 행렬이다.
정답 TT는 단일 값이기 때문에 YTY-T 연산을 위해서 TT를 행렬로 나타내주게 된다.
이러한 방식이 바로 one hot encoding 것이다.

example

import numpy as np
import tensorflow as tf

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

Y_ONEHOT = tf.keras.utils.to_categorical(T, 5)

print(Y_ONEHOT)
[[1. 0. 0. 0. 0.] # 0
 [0. 1. 0. 0. 0.] # 1
 [0. 0. 1. 0. 0.] # 2
 [0. 0. 0. 1. 0.] # 3
 [0. 0. 0. 0. 1.]] # 4

Tensorflow

리뷰를 마치고, 먼저 Tensorflow(이하 TF)에 대해서 간략하게 소개해주셨다.
요약하자면 가장 많이 쓰이고 있는 프레임워크고 때문에 학습하기도 좋다는 내용이었다.

Keras

TF 2.0이 되면서 keras가 High-level API로 선정되었다.
때문에 TF와 keras는 세트라고 생각한다.

그렇다면 keras와 TF는 어떤 관계를 가지고 있는 것인가?
평소에도 궁금해서 찾아봤었지만 오늘 확실하게 정리된 것 같다.

위 사진을 보면 이해하기 쉬울 것 같다.

일반적인 상황에서는 keras를 통해서 TF를 쓰고 있는 것이다.

Outro

one hot encoding을 끝으로 리뷰는 끝났고 이제 본격적인 수업을 시작하는 것 같았다.
내일부터 신나게 코드를 짜자고 하셨다.
수업에서 코드 관련 내용이 많아질 것이기 때문에 앞으로 포스팅할 내용이 얼마나 있을지는 모르겠다.
쉬는 시간에 미리미리 써놨긴 하지만 글 작성하는 시간은 짧아져서 좋다.

profile
어제보다 나은

0개의 댓글