본문 바로가기

Study/신입 자라기

[Study] 신입 자라기 - 107

 

신입 자라기 107일 차, 월요일

하루 일과

시간 일과
8 : 00  기상
9 : 00 ~ 10 : 00 출근 시간
10 : 00 ~ 11 : 30 1. 솔루션 설치를 위한 쉘스크립트 작성
11 : 30 ~ 12 : 30 점심 시간
12 : 30 ~ 18 : 00 1. 솔루션 설치를 위한 쉘스크립트 작성
18 : 00 ~ 19 : 00 저녁 시간
19 : 00 ~ 20 : 30 1. 솔루션 설치를 위한 쉘스크립트 작성
20 : 30 ~ 22 : 30 퇴근 및 휴식
22 : 30 ~ 25 : 00 1. 블로그 포스팅
2. 프로그래머스

.profile vs .bashrc 차이점

  • 로그인 시 → /etc/profile 실행 →/etc/profile.d 안에 모든 쉘 스크립트 실행 → ~/.profile 실행 → ~/bashrc 실행
  • bashrc(bash run command)  - bash 쉘을 통해 로그인 했을 경우
  • 환경 설정은 profile, 함수 설정은 bashrc를 권장

for문을 사용한 array에 값 추가하는 방법 - 쉘스크립트(== list.append())

var=(a, b, c)
arr=()
for v in $[var[@]]
do
arr+=($v)
done

echo $[arr[@]]

a b c

출근길에 보는 머신러닝 실천 이론

편향과 분산의 트레이드오프(Bias-variance tradeoff)

  • 모델이 복잡해진다 -> 편향(Bias)는 작아진다 -> 분산(Variance)은 커진다. -> 과적합(over-fitting)
  • 모델이 단순해진다 -> 편향(Bias)는 커진다 -> 분산(Variance)은 작아진다 -> 과소 적합(under-fitting)

결론 : 둘 다 적당히 낮은 합의점 구간을 찾기

 

편향(Bias)

  • 높다 -> 실제 값과 예측값의 오차가 크다(실제값과 예측값의 차이)

분산(Variance)

  • 높다 -> 과하게 복잡한 모델로 인한 에러 -> 이상한 것(Noisy) 같은 것도 모두 학습해 입력값에 대한 예측값 분포가 넓음

RNN 구현하기

RNN에서 변하지 않는 값들
  • W_x(입력층을 위한 가중치값
  • W_y(출력층을 위한 가중치값)
  • W_h(은닉 상태 값을 위한 가중치값)

import numpy as np

# 입력 시퀀스 길이(== input_length)
timesteps = 10

# 입력 크기(차원)
input_dim =4

# 메모리 셀 용량
hidden_units = 8

# 입력 텐서 생성
# np.random.random((길이, 차원)) -> 튜플로 넣어야함
inputs = np.random.random((timesteps, input_dim))

print(inputs)

초기 은닉상태 -> 0
# 초기 은닉 상태는 0(벡터)로 초기화

# np.zeros() ->0으로 채워진 array 생성
hidden_state_t = np.zeros((hidden_units,)) 
print(hidden_state_t)
print(hidden_state_t.shape)


# Docstring:
# zeros(shape, dtype=float, order='C', *, like=None)
print(np.zeros((hidden_units)) )

각각의 가중치 정의
# 가중치 정의
# 각 가중치의 차원은 입력과의 행렬 곱셉때문에 차원을 맞추는것

# 입력에 대한 가중치 - W_x,  (8, 4)크기의 2D 텐서
Wx = np.random.random((hidden_units, input_dim))

# 은닉상태(Hidden State)에 대한 가중치 W_h - (8, 8) 크기 텐서
Wh = np.random.random((hidden_units, hidden_units))

# bias
b = np.random.random((hidden_units,))
RNN(recurrent neural network) 이름 처럼 단순 순환 방식으로 은닉 상태(hidden state) 업데이트
for input_ in inputs:
    # Wx * Xt + Wh * Ht-1 + b(bias)
    # np.dot -> 행렬 곱셈
    output_t = np.tanh(np.dot(Wx,input_) + np.dot(Wh,hidden_state_t) + b)

    hidden_state_t = output_t
    print(output_t)

'Study > 신입 자라기' 카테고리의 다른 글

[Study] 신입 자라기 - 109  (0) 2022.07.21
[Study] 신입 자라기 - 108  (0) 2022.07.20
[Study] 신입 자라기 - 106  (0) 2022.07.16
[Study] 신입 자라기 - 105  (0) 2022.07.15
[Study] 신입 자라기 - 104  (0) 2022.07.14