기본 콘텐츠로 건너뛰기

회로도 그려보기 (Fritzing)

 회로도를 그릴일이 생겼습니다. 간단하게 설명할 수 있는 정도의 회로도면 충분한 상황인데요, 구글에 검색하다보면 브래드보드와 함께 나오는 예쁜 회로들은 어떻게 그린 것일까요 ?   검색결과, "Fritzing" 이라는 소프트웨어 였습니다.    https://fritzing.org/home/  공식사이트에서는 무료라고 하면서도 다운을 받으려면 돈을 내라고 하는데요.  낮은 버전을 찾아서 테스트 해보았습니다.  기본제공 부품도 있지만, 구글에 ~~ fritzing part라고 검색을 하면  .fzpz 확장자의 파일을 다운로드 받을 수 있고 import 하여 사용할 수 있습니다.
최근 글

파이썬(Python) Pandas 연습

안녕하세요 ? 너무 큰 엑셀파일은 다룰때마다 걱정이 됩니다. 한가지 행동을 할때마다 기다리기 일수이고, row 제한을 넘어가서 난처하기도 하죠. 파이썬 라이브러리인 pandas는 익숙해지기만 한다면 엑셀보다 훨씬 편리하게 데이터를 다룰 수 있을 것 같습니다.  기억을 위해, 이번에 다뤘던 기능들을 간단하게 정리해 놓습니다. 0. 파이썬에서 판다스 라이브러리 불러오기    import pandas as pd 1. 파이썬에서 판다스를 이용하여 엑셀파일 불러오기    data = pd.read_excel('data.xlsx') 2. 파이썬에서 판다스를 이용하여 CSV파일 불러오기    data = pd.read_csv('data.csv') 3. 파이썬에서 판다스로 불러온 데이터 확인하는 방법    data.head(10)    data.shape 4. 파이썬에서 판다스로 데이터 연결하기    data00 = data01.append(data02, ignore_index=True) 혹은    data00 = pd.concat([data01,data02], axis=0)    #data01 아래에 data02를 연결함    data00 = pd.concat([data01,data02], axis=1)    #data01 옆으로 data02를 연결함 5. 파이썬 판다스, 엑셀의 피벗 테이블 기능    traffic3 = pd.pivot_table(traffic2, index=['지점번호', '월', '일', '방향'],               ...

텐서플로와 머신러닝 놀이터(Tensorflow playground and Machine learning playground)

  안녕하세요?   딥러닝을 공부하다보면, Learning rate, Activation, input feature, hidden layers 등 많은 것을 결정하게 됩니다.  보통은 자세하게 알지 못하고, 사실 잘 몰라도 딥러닝 방법을 적용하고 원하는 결과를 얻는데에는 아무런 문제가 없었습니다.   '우리들이 이것저것 해봤더니, Activation은 그냥 ReLU를 사용하면 되더라' 정도의 결론을 내고 넘어가더라고요.   아니면, 너무 앞부분에 대한 설명이어서 gradient decent가 이러저러하고, back propagation이 이러쿵 저러쿵 하는데 여전히 마음속 깊숙히 딥러닝 과정이 그려지지는 않는 듯 합니다.   그래서 텐서플로는 놀이터를 만들어 주었는데요. 코드를 배우느라 머릿속에서 빙글빙글 거리는 개념들을 시각화 해서 다뤄볼 수 있습니다. https://playground.tensorflow.org/   우선 익숙한 단어들이 보이네요 아무 생각 없이 이것 저것 눌러보면서 해볼 수 있어요.  그래서 분류(Classification) 문제 중에 가지고 가장 복잡한 데이터셋을 골라보았습니다.  회오리 모양으로 되어 있는데 과연 이렇게 Non-linearity가 극대화(?)된 데이터셋도 분류가 될까 싶어서 이거저것 눌러보았습니다.  어떤 feature가 회오리 무늬를 만들어낼 수 있을지, 몇겹의 hidden layer가 적당할지 고민해볼 수도 있었고, Epoch가 증가함에 따라 모델이 어떻게 발전해나가는지도 확인 할 수 있었습니다.  결국에는 잘 분류 할 수 있는 모델이 만들어 졌습니다.   비슷한 놀이터가 하나 더 있었습니다. https://ml-playground.com/  머신러닝들을 가지고 해볼 수 있는 곳입니다.  분류 문제만 다룰 수 ...

누구보다 쉽게 케라스(Keras) 환경 세팅하기

안녕하세요 ?  파이썬은 진짜 쉽다. 케라스도  쉽다. 이런 이야기를 많이 들었습니다.  그런데 진짜 초보 입장에서는 시작이 절반이라는 생각이 계속 들게됩니다.  진짜 간단하게 설치 된다고 하는데, 검정색 화면을 열어서 뭘 적어야하고, 하라는대로 했는데도 튜토리얼 코드가 실행되지 않곤 합니다. 도스창 울렁증이 있는 초보들도 케라스를 할 수 있는 방법이 있습니다. 우선, 항상 그렇듯 구글검색 -> anaconda -> 공식사이트에서 다운로드 후 설치합니다. 가장 최신버전으로 설치했습니다. 낮은 버전도 함께 제공되는 이유가 분명히 있을텐데 초보여서 잘 모릅니다.   보통은 이다음부터 검정색이 나오죠.  그런데 아나콘다 네비게이터 라는 것이 함께 설치됩니다.  아나콘다 네비게이터를 실행하면 GUI로 환경을 만들고 쥬피터노트북을 실행 할 수 있습니다.  cmd 창에다가  conda create 어쩌구, activate 어쩌구, pip install 어쩌구 하던것을 쉽게 눈으로 보면서 할 수 있습니다.  우선 Environments 탭의create 를 클릭해서 새로운 환경을 하나 더 만듭니다.  오른쪽에 라이브러리 리스트가 나옵니다. 조건을 all 로 선택한 후에 search 창에 필요한 라이브러리를 찾아서 설치합니다.  tensorflow, keras, pandas, numpy, matplotlib, sklearn 정도가 keras를 활용하는데 흔하게 쓰이는 라이브러리 입니다.  걱정할게 없는게, 혹시 소스코드를 인터넷에서 찾아서 해보다가 그런 라이브러리가 없다는 에러메세지가 나온다면, 그 라이브러리를 찾아서 설치해주면 되는 것입니다. Home 으로 다시가서 application on 을 방금 만든 환경으로 선택한 다음에 jupyter ...

Mnist Hands-on (4/4) - 직접쓴 숫자 넣어보기, 어디에 적용할까

앞에서 이어집니다      1.  Mnist data 살펴보기      2. Mnist - DNN(Deep Neural Network)로 학습해보기      3. Mnist - CNN으로 학습해서 정확도 높이기      4. 직접쓴 숫자 넣어보기, 연구 적용 고민 학습된 모델을 활용해 보아야 겠죠 ? 직접쓴 숫자 몇개를 카메라로 찍은후 정사각형 모양으로 잘라내어 png로 저장하였습니다. 이번에는 OpenCV 라이브러리가 필요합니다. 그런데 라이브러리 이름은 cv2 여서 조금 헤깔릴 수 있습니다. 실습파일에는 일반환경(anaconda 등)에서 쓸 수 있는 코드도 넣어두었지만, 여기서는 colab 환경만 다루도록 하겠습니다. 일반환경에서는 동일 폴더에 png 파일을 두고 불러올 수 있지만 colab에서는 upload를 해주거나 파일이 들어있는 구글드라이브와 mount를 해주어야 합니다. 간편하게 파일 업로드 기능을 이용하여 png 파일을 올리고, 파일을 불러옵니다. 사진의 크기가 임의로 들어가있을 텐데, 28x28 픽셀로 맞춰주고, CNN 모델에 넣을 수 있는 형태로 변환해줍니다.  결과가 잘 나왔네요.  아무래도 Mnist 데이터셋처럼 깔끔하게 정리되어있는 이미지가 아니기 때문에, 학습 정확도만큼의 성능이 발휘되지는 않을 것입니다. 그렇다면 CNN은 어디에 적용할 수 있을 까요 ? 제 분야에서 이미지를 활용한 logistic regression을 적용할만한 곳을 고민해보았습니다. 열화상 이미지를 가지고 차량 종류를 분류하여 교통 데이터를 생성한다거나, 포장의 상태를 자동으로 분류할 수 있을 것입니다. 분류를 할 수 있다는 것은 YOLO 처럼 인식하는 것으로 활용될 수 있다는 것이며, 그렇다면 활용할 수 있는 부분은 더욱 많...

Mnist Hands-on (3/4) - CNN으로 학습해서 정확도 높이기

앞에서 이어집니다      1.  Mnist data 살펴보기      2. Mnist - DNN(Deep Neural Network)로 학습해보기      3. Mnist - CNN으로 학습해서 정확도 높이기      4. 직접쓴 숫자 넣어보기, 연구 적용 고민 본격적으로 CNN을 도입해서 학습결과의 accuracy를 높여보도록 하겠습니다. 필요한 라이브러리를 불러옵니다. 훨씬 더 많은 라이브러리가 필요합니다. Flatten, Conv2D 등 CNN을 위한 라이브러리도 있고 Dropout 과 같이 over fitting 개선효과가 있는 라이브러리들도 있는 것을 확인 할 수 있습니다. Mnist set을 불러오고 형태를 정리하는 것은 DNN과 크게 다르지 않습니다. 다만 CNN 은 Dimension을 낮출 필요가 없이 2D나 3D 등의 형태 그대로 넣어 줄 수가 있습니다. 나중에 flatten 층을 통해서 dense 층으로 넘어 갈 수 있습니다. GPU 옵션 부분은 환경에 따라 GPU 메모리를 학습 이후에도 확보하고 있는 경우가 있길래 넣어뒀습니다.(colab에서는 사용 하든 안하든 문제가 발견되지 않았습니다) CNN 모델은 convolution 층과 maxpooling 층을 번갈아 가면서 넣었습니다. 첫번째 convolution 층은 5x5 의 사이즈와 (1,1) 의 strides를 가지고 있습니다. 두번째 층은 2x2의 사이즈와 (2,2)의 strides를 가지고 있는데, Hands-on 에서는 이정도만 설명하고 넘어가겠습니다. 이것저것 옵션을 바꾸어 가면서 시도해 볼 수 있습니다. *CNN 자세한 설명 model.summary() 명령어로 모델의 형태를 확인 할 수 있습니다.  CNN 모델을 학습합니다.  batch-size를 바꿀 수...

Mnist Hands-on (2/4) - DNN(Deep Neural Network)로 학습해보기

앞에서 이어집니다. Mnist hands-on 두번째 입니다.      1. Mnist data 살펴보기      2. Mnist - DNN(Deep Neural Network)로 학습해보기      3. Mnist - CNN으로 학습해서 정확도 높이기      4. 직접쓴 숫자 넣어보기, 연구 적용 고민 앞서 다뤄보았던 Mnist 데이터를 이용해서 간단한 딥러닝을 수행해보려고 합니다. DNN 부분은 Markdown 부분에 코드를 적어놓아서, 아래에 코딩을 직접 따라서 해 볼 수도 있고, 복사/붙여넣기로 진행해볼 수도 있습니다. 주요 라이브러리를 불러오고 Mnist 데이터셋을 불러옵니다. Neural network에 넣기 위해서는 배열의 형태, demension을 맞춰주어야 합니다. 28x28 형태로 되어있던 것을 784 로 만들어 주는 것은 2D 형태였던 데이터를 1열(1D)로 만드는 것을 뜻합니다. 모든 값을 255로 나누는 것은 값을 0-1 사이에 위치시켜(scaling) 학습을 원활하게 합니다.  앞서 설명했던대로, label 값은 one hot vector 형식으로 변경해줍니다. 모델은 64개의 뉴런으로 구성된 Dense 층을 Input 으로 하고, 10개의 뉴런(label 이 10가지) 의 output 층을 갖습니다. Hidden layer은 64개의 뉴런층이 두층 추가되어있습니다. 여기서도 Input 부분의 dimension과 output 부분뉴런 개수가 X_train 값, Y_train 값의 형태와 잘 맞아야 합니다. 최근에 activation은 그냥 relu를 사용하는 경향이 있고, 마지막 output 층에서만 softmax(classification의 경우만) 를 사용하였습니다. *Activation 이란?  loss 를 계산 하는 방법 (Cost...