목록keras (23)
NeuroWhAI의 잡블로그
(귀여운 고양이 사진을 혐짤로 만드는 예시) 지금 보는 케라스 책의 VGG16을 이용한 딥 드림 이미지 생성 예제를 실습하고 있는데 결과물이 이렇게 나오는 이유가 뭘까 생각한 것을 정리 해봅니다. 수알못이라 설명이 실제와는 많이 다를 것 같습니다 ㅠ 수알, 딥알님들의 설명을 기다립니다..! 코드는 다 필요없고 핵심만 남기면 아래와 같습니다. for i in range(num_pool_layers): layer_name = "block{:d}_pool".format(i+1) print("Pooling layer: {:s}".format(layer_name)) layer_output = layer_dict[layer_name].output # Loss loss = K.mean(layer_output) # G..
책의 예제를 따라 실습했는데 작동은 그럭저럭 잘 합니다.문제는 이 녀석이 인종차별주의자라는 것이죠! ... Epoch 19/20 4960/4960 - 1s 150us/step - loss: 8.6177e-04 - acc: 0.9998 - val_loss: 0.0182 - val_acc: 0.9934 Epoch 20/20 4960/4960 - 1s 144us/step - loss: 5.9968e-04 - acc: 0.9998 - val_loss: 0.0186 - val_acc: 0.9953 Input a test sentence : I love it! Positive : 99.99902248382568%, Negative : 0.0009764923561306205% Input a test sentence ..
드디어! 성공했습니다! 와! PPAP!! 간단하게 입력 문장을 문자 단위로 나누고 그걸 그대로 출력하는게 정답인 데이터 세트를 사용했고 학습을 시킨 후 어텐션 매트릭스(Attention Matrix)를 출력해서 제대로 학습이 되었는지 검증을 했습니다. 짠! 성공한게 틀림없다구요! (아마도요...) X축이 입력 문장, Y축이 출력 문장입니다. 만들면서 가장 힘들었던 건 텐서를 생각대로 다루는 것과 어텐션 스코어 계산이었습니다. 텐서를 막 늘리고 돌리고 연산하는데 차원을 잘 맞춰야 하면서도 무작정 차원만 맞추면 연산이 올바르지 않게 되어버렸어서 힘들었습니다. 가장 멍청했던 실수는 텐서의 축을 치환하는데 Permute대신 Reshape을 썼던 것입니다. 이러면 차원은 맞춰지지만 요소들이 이상하게 배치되죠.....
실패했다.적용 방법도 떠오르지 않았던 것과 다르게 이번엔 확실히 적용할 수 있는 방법이 생각나서 진행했다.그러나 결과적으로 실패한 것 같다.번역 데이터 세트를 사용했고 실패했지만 번역 품질이 못봐줄 수준은 아니었다.그러나 최종 검증인 어텐션 매트릭스에서 실패가 보였다.어텐션 매트릭스라고 함은 입력 단어들과 출력 단어들간에 관련성을 보여주는 매트릭스인데예를 들면 영어로 'I'가 한국어의 '나'와 관련성이 높게 나와야 한다는 뜻이다.하지만 직접 출력해본 매트릭스는 그러한 특성이 전혀 나타나지 않았고 무언가 이상한 벡터의 반복이었다.그렇다는건 연산을 잘못 적용했다는 소리인데 차원만 맞추느라 연산의 연결을 제대로 생각하지 못한게 실패의 원인인듯 하다. 힘들다..이렇게 오래, 많이 도전했지만 실패해본게 정말 오랜..
어텐션 매커니즘을 적용하기 전에 시험삼아 커스텀 RNN 셀로 RNN 레이어를 만들고 IMDB(영화 리뷰 및 평점) 데이터 세트를 학습시켜 보았습니다. 코드는 아래와 같습니다. (GRU는 글 맨 밑에 있습니다) import numpy as np import matplotlib.pyplot as plt import keras from keras import backend as K from keras import layers, models, datasets from keras.preprocessing import sequence class MyRNNCell(layers.Layer): def __init__(self, units, **kwargs): self.units = units self.state_size..
저번에 따로 해봤는데 잘 안되었던 이유가 모델이 이상한건지 이미지가 커서 그랬던건지 모르겠어서 일단 모델을 새로 설계하고 32x32x3(RGB)의 작은 사이즈로 시도했습니다. 그랬더니 학습이 잘 진행되더군요. 아래는 대략 800장의 이미지를 900~1000 에포크 동안 학습한 결과물입니다. 코드는 아래와 같습니다. import os.path import numpy as np from keras.models import * from keras.layers import * from keras.optimizers import * import keras.backend as K import matplotlib.pyplot as plt K.set_image_data_format('channels_last') cla..
사실 정석의 DCGAN과는 차이(드롭아웃을 썼다거나)가 있지만 신경망 구성이야 쉽게 바꿀 수 있으니 틀만 보신다는 느낌으로 봐주세요.참고로 제가 처음부터 짠 코드는 아니고 오픈소스를 좀 수정했습니다. import numpy as np from keras.models import * from keras.layers import * from keras.optimizers import * from keras.datasets import mnist import keras.backend as K import matplotlib.pyplot as plt K.set_image_data_format('channels_last') class Gan: def __init__(self, img_data): img_size ..
케라스로 MNIST 데이터를 학습시키고 외부 이미지 하나를 불러와서 무슨 숫자인지 출력해보는 예제입니다.기본적으로 CNN이고 배치정규화, 드롭아웃을 추가로 사용했습니다. 이미지는 무조건 input.png라는 이름으로 작업 경로에 존재해야 하고 28x28 크기여야 합니다.배경은 검은색, 숫자는 흰색으로 그리세요.input.png가 없으면 구글 드라이브에서 테스트 이미지를 다운로드하는데 번거로우니 그냥 직접 그리세요. 미리 학습된 가중치 데이터를 원하시면 아래 링크에서 받으시고 작업 경로에 넣어주세요. 코드: # !pip install -U -q PyDrive import sys import os.path import numpy as np import keras from keras import layers,..
Attention 매커니즘을 검색하다가 좋은 코드를 발견해서 공부하면서 좀 다듬었습니다. 링크 : https://github.com/philipperemy/keras-attention-mechanism 학습 데이터는 랜덤한 쓰레기 값이 들어있는 입력 데이터에서 8번째(인덱스 7) 값만 출력(목표) 데이터와 관련이 있는데 이걸 모델이 잘 알아차렸는지 보는 예제입니다. 코드: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970import numpy as npfrom keras import backend as Kfrom kera..
https://medium.com/data-science-group-iitr/artistic-style-transfer-with-convolutional-neural-network-7ce2476039fd https://harishnarayanan.org/writing/artistic-style-transfer 위 두 글에 나온 코드를 복붙해가면서 스타일 변환기를 구현해봤습니다. 아직 이론적으로나 코드에서나 이해가 안되는 부분이 있어서 좀 더 공부하고 직접 처음부터 짜봐야겠습니다. 코드:1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666..