글

라벨이 deeplearning인 게시물 표시

딥러닝에서 많이 사용되는 활성화 함수 (activation function)와 비활성화 함수(deactivation function)

이미지
 본 글에는 딥러닝에서 사용하는 활성화 함수와  역전파(backward propagation) 과정에서 사용되는 비활성화 함수의 python, c 코드가 실려 있다.  1. relu , leaky-relu python code def relu(x):     if x > 0:         return x     return 0 def deactive_relu(x):     if x > 0:         return 1     return 0 def leaky_relu(x):     if x > 0:         return x     return x*0.01 def deactive_leaky_relu(x):     if x > 0:         return 1          return 0.01 c code static double ReLU(double x) {    if (x > 0) return x;    return 0; } static double DeActivateReLU(double x) {    if (x > 0) return 1;    return 0; } 그래프로 표시하면 아래와 같다. def show_relu():     x = np.arange(-10,10,0.1) ...

openai gym Atari게임 환경의 v0, v4, Deterministic, NoFrameskip, ram, max_episode_steps의 의미와 차이

강화 학습(reinforcement learning) 환경으로 많이 사용되는 openai gym의 게임이름 뒤에 붙는 v0, v4, Deterministic, NoFrameskip, ram의 의미와 차이는 다음과 같다.  1. v0  25% 확률로 새로 입력 받은 action을 무시하고 이전 action을 반복한다. repeat_action_probability : 0.25 2. -v4 v0와 다르게 받은 입력을 그대로 사용한다. repeat_action_probability : 0  3. Deterministic 고정된 frameskip을 사용한다. space_invaders인 경우는 frameskip=3이고, 그 외는 frameskip=4이다.  만약 Deterministic, noFrameskip 이 없을 경우는 게임 환경마다 다르지만, 랜덤으로 2~4 프레임이 스킵 된다.   4. noFrameskip 프레임 스킵을 사용하지 않는다. 5. ram (210,160,3)형태의 이미지 대신 128바이트의 observation/state 데이터를 만들어 반환한다.  ram이 없는 경우는 210x160x3의 이미지가 observaion/state로 반환된다. 6. max_episode_steps 에피소드의 최대 steps를 나타낸다. 강화 학습 중 더이상 게임을 하지 않고 게임이 중단된다면, max_episode_steps를 조정할 필요가 있다.  max_episode_steps는 gym\envs\__init__.py를 직접 수정하던가 아니면 아래처럼 게임 환경을 만들고 수정할 수도 있다. import gym env = gym.make('SpaceInvaders-v0') env.max_episode_steps = 100000#원하는 steps를 설정 ...

Keras 모델 가중치 weights 파라미터 가져오기 설정하기 저장하기 및 불러오기

이미지
Keras 모델의 가중치(weights) 파라메터 검색, 설정, 저장 및 불러오기 정리 관련 포스트다. keras model에서 가중치(weights) 가져오기  Model.get_weights() return:   - 모델의 가중치 배열 Keras model에 가중치(weights) 설정하기 Model.set_weights(weights) argument:  - weights : numpy 배열의 가중치 Keras model의 가중치(weights) 파일로 저장하기 Model.save_weights(filepath, overwrite=True) arguments:  - filepath : 저장할 파일 경로, HDF5 형식으로 저장된다.  - overwrite : 덮어쓰기 여부 파일에서 Keras model 가중치(weights) 불러와 설정하기 Model.load_weights(filepath, by_name=False, skip_mismatch=False, reshpae=False) arguments:  - filepath : 가중치 파일의 경로  - by_name : 이름 또는 토폴로지 순서로 가중치를 로드 할지 여부를 나타낸다.  - skip_mismath : 가중치 개수나 모양이 일치하지 않는 레이어를 건너 뛸지에 대한 여부를 나타낸다. (by_name이 True인 경우)  - reshape : reshape 여부를 나타냄 예제 코드 from keras.layers import Input, Dense, Dropout, regularizers from keras.models import Model, load_model, save_model from keras.optimizers import Adam def build_model(i...

Keras 모델 저장(save_model) 및 불러오기 (load_model) 방법

이미지
Keras 모델을 파일로 저장하고 불러오는 방법 정리 from keras.models import load_model, save_model Keras 모델 파일로 저장하기 keras.models.save_model(model, filepath, overwrite=True, include_optimizer=True) arguments:  model : 저장할 Keras 모델  filepath : 파일 저장 경로  overwrite : 덮어쓰기 여부  include_optimizer : True인 경우 optimizer의 상태를 함께 저장 Keras 모델 파일에서 불러오기 keras.models.load_model(filepath, custom_objects=None, compile=True) arguments:   filepath : 자장된 파일 경로   custom_objects : deserialization 동안 고려되어야할 사용자 정의 class 또는 함수에 대한 옵셔널 디럭토리 매핑 이름(문자열)   compile : 로드 후 모델 컴파일 여부 return:   파일에서 불러온 keras model save_model, load_model 사용 예제 코드 from keras.layers import Input, Dense, Dropout, regularizers from keras.models import Model, load_model, save_model from keras.optimizers import Adam def build_model(in_size, out_sizes, depth=2, layer_units = 128, lr=0.01):     in_layer = Input(shape=(in_size,),name='inp...

강화학습 (reinforcement learning) 정책 학습과 가치 학습 비교 - Deep Q Network를 이용한 Atari Space Invaders 와 CartPole

이미지
정책 학습과 가치 학습  강화 학습(reinforcement learning)의 두가지 범주에 속하는 정책 학습과 가치 학습을 비교하기 위해 이전 포스트에서 정책 경사(policy gradient)를 이용한 Atari 게임 Space Invaders 학습 을 알아본 적이 있다.  본 포스트에서는 OpenAI gym의 CartPole과 Atari 게임 Space Invaders 환경에서 Deep Q-network을 이용한 Agent를 만들고 학습이 잘 이루어지는지 테스트하였다. 이전 정책 경사(policy gradient) 에이전트에서 Space Invaders학습이 잘 이루어지지 않아 학습 방법 비교를 위해 간단한 게임인 CartPole도 테스트에 사용하였다. DQN(Deep Q-Network)을 이용한 Atari 게임 Space Invaders 와 CartPole 학습 openai gym Atari 게임 Space Invaders / CartPole 환경  Space Invaders는 128바이트 형태의 상태 데이터를 반환하는 'SpaceInvaders-ram-v0'를 사용하였다. import gym env = gym.make("SpaceInvaders-ram-v0")  CartPole은 'CartPole-v0'을 사용하였으며, 테스트 목표에 맞게 _max_episode_steps도 설정 했다. import gym env = gym.make("CartPole-v0') env._max_episode_steps=MAX_EPISODE_STEP+1 Q-learning  Q-learning은 정책을 직접 학습하는 대신 상태(state)와 행동(action)의 가치 (Q-value)를 학습한다. 가치 Q-value는 어떤 상태(state)에서 어떤 행동(action)...

강화학습 (reinforcement learning) 정책 학습과 가치 학습 비교 - 정책 경사 (policy gradient)를 이용한 Atari Space Invaders

이미지
정책 학습과 가치 학습 강화학습 (reinforcement learning)에서는 Agent를 정책 학습과 가치 학습 두가지 범주의 방식으로 학습시킨다고 한다. 정책 학습은 보상(reward)를 최대화하는 정책(policy)를 직접 학습하고, 가치 학습은 상태(status)와 행동(action)의 모든 가치(value)를 학습한다. 본 포스트에서는 gym을 이용한 Atari 게임 Space Invaders 환경에서 정책 경사를 이용해 정책을 학습하는 Agent를 만들고 학습이 잘 이루어지는지 테스트하였다. 정책 경사 (policy gradient)를 이용한 Atari 게임 Space Invaders 학습 openai gym Atari 게임 Space Invaders openai gum 설치 후 여러 게임 환경을 불러올 수 있다. 그중 본 포스트에서는 Space Invaders 사용했다. import gym env = gym.make("SpaceInvaders-v0") or  env = gym.make("SpaceInvaders-ram-v0") 위의 코드를 사용해 Space Invaders 게임 환경을 불러올 수 있다. 'SpaceInvaders-v0'는 (210,160,3) 형태의 이미지 데이터를, 'SpaceInvaders-ram-v0'는 128바이트 형태의 데이터를 observation으로 반환한다. 본 포스트에서는 'SpaceInaders-ram-v0'를 사용하였다. ipdb> observation array([[[ 0,  0,  0],         [ 0,  0,  0],         [ 0,  0,  0],         ...,...