목록개발 및 공부/라이브러리&프레임워크 (52)
NeuroWhAI의 잡블로그
bevyengine.org/ Bevy - A data-driven game engine built in Rust Bevy is a refreshingly simple data-driven game engine built in Rust. It is free and open-source forever! bevyengine.org Bevy는 Rust로 짜여진 게임 엔진입니다. 이 글을 쓰는 시점엔 막 0.4.0 버전이 나와 활발히 바뀌고 있는 단계라는 게 좀 걸리지만 맘에 들어서 소개합니다. 주요 특징으론 ECS, 2D/3D, 크로스플랫폼, UI, Hot Reloading, 빠른 컴파일 시간, 여러 플러그인(피킹, 물리엔진 등) 지원 등이네요. 저는 쉽게 다가갈 수 있었던 게 강점 같습니다. 아래는 제가 차례..
std::numeric_limits::digits10 10진법 표기로 text -> T -> text 변환시 항상 자릿수가 보존되는 최소 자릿수 번호. 다르게 말하면 T 타입의 수로 변환할 문자열은 그 원본 텍스트의 digits10 자릿수까지만 항상 보존이 보장된다. 예) ::digits10 == 2 : "42" -> 42 -> "42"는 가능하지만 "200" -> -56 -> "-56"는 실패하니 2자리가 최대. 예) ::digits10 == 6 : "8.589973e9" -> 8.589974e9 -> "8.589974e9" 물론 어떤 수는 저 너머의 자릿수도 보존되지만 그건 예외일 뿐이고 항상 보장해야하는 경우엔 digits10 값을 이용. std::numeric_limits::max_digits10..
면허 시험 때문에 지쳐서 한동안 안했지만 산불 제보 서버는 아직 만들고 있습니다 ㅎ... 최소한의 서버 기능은 거의 다 만들었는데 이미지 업로드에 막혀서 시간이 좀 걸렸네요. 원랜 multipart 포맷으로 post하면 바로 바이너리 데이터를 서버로 전송할 수 있지만 보아하니 Rocket v0.4에서 해당 기능을 구현하려다가 v0.5로 미뤘다는 것 같더라고요. (참고) 물론 직접 구현할 수도 있겠지만 어려울 것 같아서 단순한 방법을 쓰기로 했습니다. 웹 사이트에서 이미지를 Base64 텍스트로 인코딩하여 서버로 보내는 방법이죠. 시연 영상: 코드는 아래와 같습니다. 웹 사이트(파일 선택과 Upload 버튼 부분만): 서버(시연 영상에서 Upload 버튼을 눌렀을 때): 작동은 잘 하는데 웹 표준에 제가 ..
책의 예제를 따라 실습했는데 작동은 그럭저럭 잘 합니다.문제는 이 녀석이 인종차별주의자라는 것이죠! ... 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..
이용한 라이브러리는 rocket, google-analytics3, yup-oauth2입니다.사실 제가 한거라곤 위 라이브러리들 공부한거랑 중간 캐시 로직을 만든 것 뿐이지만요 ㅋㅋ...보안도 없습니다. API는 아래처럼 생겼습니다. http://hostname/pv/{ids}/{page_id}(참고로 pv는 page view라는 뜻입니다 promotional video 아님)ids는 "ga:숫자들"형식의 애널리틱스 아이디이며page_id는 119, 112 등의 블로그에서의 글 주소이자 번호입니다.티스토리는 번호가 아니라 제목을 주소로 사용할 수도 있어서 그것도 되게끔 하긴 했는데 테스트는 안해봤습니다...이전 글에서는 자체 DB를 이용할 예정이라고 했는데 일단 구글 애널리틱스 자체를 DB로 쓰고 문제가..
저번에 따로 해봤는데 잘 안되었던 이유가 모델이 이상한건지 이미지가 커서 그랬던건지 모르겠어서 일단 모델을 새로 설계하고 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 ..