※ Notification
본 포스팅은 작성자가 이해한 내용을 바탕으로 작성된 글이기 때문에 틀린 부분이 있을 수 있습니다.
잘못된 부분이 있다면 댓글로 알려주시면 수정하도록 하겠습니다 :)
오늘, 리뷰를 끝내고 이제부터 본격적인 Tensorflow 강의가 시작되었다.
Deep learning 기본 architecture를 기억한다면 어려울게 없다고 하셨다.
수업에 앞서 lambda 함수 관련 질문을 받으셨다고 Code consistency에 대해서 간략하게 설명해주셨다.
프로그래밍에서 중요한 것이 Code consistency을 유지하는 것인데, 이는 notation을 동일하게 쓴다는 것을 의미한다.
# 1번 방식
if {
code
}
# 2번 방식
if
{
code
}
위와 같이 if문을 사용할 때 괄호를 다음과 같은 2가지 방식으로 사용할 수 있는데, 일관성 있게 한 가지의 방식으로만 사용해야된다는 것이다. 여담으로 나는 1번 방식을 선호하는 편이다.
회사나 협업에 있어서 Coding rule과 Guideline이 존재할테고 이를 지키는 것이 중요하다고 하셨다.
개인적으로도 관심이 많은 부분이라서 적어보았다.
python을 사용할 때도 몇 가지 Rule(?)이 있다.
평소 list comprehension이 익숙치 않았었는데 강의에서 언급된 김에 정리해봤다.
[(식) for (변수) in (리스트)]
example
size = 10
arr = [i * 2 for i in range(size)]
f = lambda x = W : func(W)
numerical_derivative(f, W)
함수 f
가 바뀌어도 numerical_derivative(f, W)
의 코드는 변하지 않는다.
따라서 Code consistency
를 유지할 수 있고, 이는 코드의 이해를 돕고 수정의 편리함을 준다.
Deep learning에는 입력층, 은닉층, 출력층이 있다.
One hot encoding이란 loss를 계산하기 위해 정답을 행렬로 표시하는 방법이다.
one hot encoding에 대해 알아보기 전에 DL에서 왜 one hot encoding이 쓰이는지부터 알아보고 가자.
sigmoid, relu, tanh 등의 activation function에는 변곡점이 1개밖에 없다.
따라서 2개의 데이터만 분류할 수 있다.
그렇다면 다항 분류의 경우에는 어떻게 할 것인가?
출력 노드를 정답의 개수만큼 만들어주고 그 중에 가장 큰 값의 index를 정답으로 인식 시키면 된다.
때문에 가 행렬로 표현되게 되는데 여기서 문제가 발생한다.
loss를 계산하기 위해서 를 해야되는데 앞서 서술했듯이 가 행렬이다.
정답 는 단일 값이기 때문에 연산을 위해서 를 행렬로 나타내주게 된다.
이러한 방식이 바로 one hot encoding 것이다.
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(이하 TF)에 대해서 간략하게 소개해주셨다.
요약하자면 가장 많이 쓰이고 있는 프레임워크고 때문에 학습하기도 좋다는 내용이었다.
TF 2.0이 되면서 keras가 High-level API로 선정되었다.
때문에 TF와 keras는 세트라고 생각한다.
그렇다면 keras와 TF는 어떤 관계를 가지고 있는 것인가?
평소에도 궁금해서 찾아봤었지만 오늘 확실하게 정리된 것 같다.
위 사진을 보면 이해하기 쉬울 것 같다.
일반적인 상황에서는 keras를 통해서 TF를 쓰고 있는 것이다.
one hot encoding을 끝으로 리뷰는 끝났고 이제 본격적인 수업을 시작하는 것 같았다.
내일부터 신나게 코드를 짜자고 하셨다.
수업에서 코드 관련 내용이 많아질 것이기 때문에 앞으로 포스팅할 내용이 얼마나 있을지는 모르겠다.
쉬는 시간에 미리미리 써놨긴 하지만 글 작성하는 시간은 짧아져서 좋다.