본문 바로가기

전체 글

keras.models.Model( ) 케라스에서 모델 설계를 할 때 Sequential( )을 주로 사용해왔다. 단순히 이전 layer의 output이 다음 layer의 input으로 들어가는 선형적인 경우에 사용해주면 아주 편리하기 때문이다. 그래서 단점도 존재한다. DenseNet( ) 같이 선형적 흐름이 아닌 모델 설계의 경우엔 사용하질 못 한다. keras.models.Model( )을 사용하면 Sequential( )의 불편한 점에서 벗어날 수 있다. 이 놈은 Multi Input / Multi Output을 지원한다. 위와 같은 흐름을 갖는 모델을 설계하고 싶다면 Model( )을 사용해주면 된다. import keras from keras.layers import Input, Embedding, LSTM, Dense from k.. 더보기
MNIST 분류 모델, 조금 다르게 실행해보자 / get_tensor_by_name( ) 일단 코드부터 보자. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 import tensorflow ass tf from tensorflow.examples.tutorials.mnist import input_data mnist = input_data.read_data_sets('./mnist', one_hot = True) X = tf.placeholder(tf.float32, (None, 28,28,1), name = 'INPUT') Y = tf.placeholder(tf.float32, (None, 10)) is_training = tf.pla.. 더보기
RNN과 CNN 동시 사용 모델(RCNN / CRNN)의 개념 및 구현 RCNN 개념과 CNN 개념을 하나로 연결해서 설계된 모델이 있다. 연결 순서에 따라 아래와 같이 나뉜다. Convolutional Recurrent Neural Network (CRNN) Recurrent Convolutional Neural Network (RCNN) 1. CRNN CNN을 연산을 먼저 한 뒤에 각 채널을 나눠서 RNN에 입력하는 구조이다. CNN을 통해 Feature를 추출하고, 이를 RNN으로 분류하는 흐름이라 생각하면 된다. [ An End-to-End Trainable Neural Network for Image-based Sequence Recognition and Its Application to Scene Text Recognition ] 2. RCNN 여러 conv연산이.. 더보기
Tensorflow 개념 정리) 텐서, 변수, 오퍼레이션, 계산 그래프 MNIST 분류 문제를 공부할 때만 해도 사용법 익히기에 급급했기 때문에 tensorflow를 제대로 이해하고 다루진 않았었다. 일반적인 파이썬 코드 구현하고는 다르게 tensorflow는 계산 그래프에 노드( = 연산, 계산, 오퍼레이션 )을 추가하고 session을 통해 실행해줘야 하는 구조라고만 이해하고 넘겼다. tf.placeholder( ), tf.layers.conv2d( ), tf.train.AdamOptimizer( )와 같은 함수들로 계산 그래프를 그려가며 모델을 설계하고, tf.Session( ).run( )으로 그려진 계산 그래프를( = 설계된 모델을 ) 실제로 실행하는 구조라고만 이해했었다. + X = tf.placeholder( tf.float32, None) 의 경우, X는 tf.. 더보기
IoU, Intersection over Union 개념을 이해하자 Intersection over Union ? Intersection over Union (IoU)는 object detection에서 사용되는 도구다. 성능 지표는 아니고, 객체 인식 모델의 성능 평가를 하는 과정에서 사용되는 도구로 생각하면 된다. 정의는 아래와 같다. IoU = 교집합 영역 넓이 / 합집합 영역 넓이 두 box의 크기가 동일하다 가정하면, 두 개의 box가 적어도 2/3는 겹쳐줘야 0.5의 값이 나오기 때문에 여러 곳에서 IoU의 threshold 값을 0.5로 잡아서 사용하는 듯 하다. 모델의 성능을 높여보고자 IoU threshold 값을 올려서 모델링을 해도 되기는 하는데, 객체 인식 모델의 성능이라는 게 feature extractor, classifier, regressor.. 더보기
Ubuntu에 시스템 변수 영구 등록하는 방법 터미널 창에 다음의 코드 입력 1 sudo -H gedit /etc/environment cs 계정 패스워드 입력 원하는 변수명과 경로 작성 후 저장 재부팅 터미널 창에 export 명령어 입력 후 제대로 설정 됐는지 확인 [ 참고 사이트 ] https://askubuntu.com/questions/58814/how-do-i-add-environment-variables 더보기
Ubuntu에서 USB 인식시키는 방법 회사에서 Ubuntu 운영체제의 워크스테이션을 사용하게 돼서 익히고 있는 중이다. 이곳 저곳 참고해서 현재는 아래와 같이 꾸며놓은 상황이다. Ubuntu 버전 업그레이드도 하고, Visual Studio Code도 다운받고, 팀뷰어도 다운받고 등등.. 윈도우랑 비슷한 것 같으면서 다르다. (2021.09.15. 아 우분투 한글도 안 되고 뭐도 안 되고 복잡하고 어렵고 그냥 window로 밀어버렸다ㅎ) 오늘은 Ubuntu에서 USB 인식시키는 방법에 대해 정리하려고 한다. 이게 내 컴퓨터만 그러는지 모르겠는데 USB 꽂았다고 해서 바로 인식이 안 되고 에러가 나더라. 이유는 알아보는 건 포기했고 해결법만 찾아봤다. 여기랑 여기를 참고해서 해결했다. 사용한 코드만 순서대로 써놓고 마루리하고자 한다. sudo.. 더보기
Matplotlib을 이용해 그래프 그리기 Python의 matplotlib을 이용해 sine 함수 그래프를 그리는 방법에 대한 정리 글이다. 코드 몇 줄이면 뚝딱 뚝딱 할 수 있는 작업이지만 처음 하는 사람에게는 X축 설정에서 헷갈릴 부분들이 있어 그 부분을 중심으로 정리하고자 한다. import numpy as np import matplotlib.pyplot as plt fs = 100 time = np.arange(-5, 5, 1 / fs) signal = np.sin(time) plt.figure(1) plt.plot(time, signal) plt.show() [Line 4] fs는 sampling rate을 의미한다. 전자 장비를 사용하여 다루는 신호는 무조건 digital signal 즉 discrete signal이다. 자연에서 .. 더보기