아두이노 로 코딩하며 배우는 딥러닝 - adu-ino lo kodinghamyeo baeuneun dibleoning

[도서] 아두이노로 코딩하며 배우는 딥러닝

2021-06-15 KENNETH 새로나온책 0

아두이노 로 코딩하며 배우는 딥러닝 - adu-ino lo kodinghamyeo baeuneun dibleoning

[도서] 아두이노로 코딩하며 배우는 딥러닝

아두이노 로 코딩하며 배우는 딥러닝 - adu-ino lo kodinghamyeo baeuneun dibleoning

분야별 신상품 – 국내도서 – 컴퓨터와 인터넷
아두이노 로 코딩하며 배우는 딥러닝 - adu-ino lo kodinghamyeo baeuneun dibleoning
[도서]아두이노로 코딩하며 배우는 딥러닝
서민우 저 | 앤써북 | 2021년 06월
판매가 18,720원 (10%할인) | YES포인트 1,040원(5%지급)

국내 최초로 머신러닝과 딥러닝 원리와 모델을 78개 아두이노 예제로 직접 구현!

『아두이노로 코딩하며 배우는 딥러닝』책은 국내 최초로 인공지능의 머신러닝과 딥러닝 원리를 아두이노 코딩을 통해서 이해하

Source: [도서] 아두이노로 코딩하며 배우는 딥러닝

  • book

  • 아두이노 로 코딩하며 배우는 딥러닝 - adu-ino lo kodinghamyeo baeuneun dibleoning

    Apply Fine-Grained Access Control and Routing with API Connectivity Manager

    2023-01-13 KENNETH 0

  • 아두이노 로 코딩하며 배우는 딥러닝 - adu-ino lo kodinghamyeo baeuneun dibleoning

    카프카 커넥트를 데이터 파이프라인으로 사용하는 이유? kafka-sink-connector 오픈소스 언빡싱!

    2023-01-12 KENNETH 0

  • 아두이노 로 코딩하며 배우는 딥러닝 - adu-ino lo kodinghamyeo baeuneun dibleoning

    Why Managing WAFs at Scale Requires Centralized Visibility and Configuration Management

    2023-01-12 KENNETH 0

  • 아두이노 로 코딩하며 배우는 딥러닝 - adu-ino lo kodinghamyeo baeuneun dibleoning

    USN-5799-1: Linux kernel (OEM) vulnerability

    2023-01-11 KENNETH 0

  • 아두이노 로 코딩하며 배우는 딥러닝 - adu-ino lo kodinghamyeo baeuneun dibleoning

    Promise는 왜 취소가 안 될까?

    2023-01-11 KENNETH 0

���Ƶ��̳�� �ڵ��ϸ� ���� �����ס�å�� �ΰ������� �������� �����ϰ�, ������ �˰����� ���ʿ� ��ȭ ������ ���� ������ ���̺귯�� ������ Ȱ�� ������� �Ұ��Ͽ����ϴ�. Ư�� �������� �ٽ��� �ΰ��Ű���� �����ϰ� ���� �� Ȱ�� ����� �Ƶ��̳� �ڵ����� ���� Ǯ� ���� ������ �Ƶ��̳� �ΰ����� ������ �����Դϴ�.

아두이노에서 인공신경망 라이브러리를 직접 구현해 볼 수 있는 실습을 따라해보는 <아두이노로 코딩하며 배우는 딥러닝> 입니다. <아두이노 자율주행 RC카 만들고 직접 코딩하기> 책 다음으로 함께 보기 좋습니다.

<아두이노로 코딩하며 배우는 딥러닝>은 인공신경망에서 사용되는 수식들을 코드 라인별로 도표와 함께 알기 쉽게 설명해줍니다.


<아두이노로 코딩하며 배우는 딥러닝>은 먼저, #colab #코랩 을 사용하는 점이 좋았습니다. 코랩의 사용법은 쥬피터노트북과 비슷하고, 내PC 사양에 전혀 제한을 받지 않아서 편하게 실습할 수 있었습니다.

아두이노 로 코딩하며 배우는 딥러닝 - adu-ino lo kodinghamyeo baeuneun dibleoning

아두이노 로 코딩하며 배우는 딥러닝 - adu-ino lo kodinghamyeo baeuneun dibleoning

코랩에서 2차함수 근사한 결과

<아두이노로 코딩하며 배우는 딥러닝>

p.33-43

<아두이노로 코딩하며 배우는 딥러닝>은 수학 그래프를 가지고, 텐셔플로 사용법과 딥러닝 개념을 보다 쉽게 이해할 수 있도록 돕습니다.

아두이노 로 코딩하며 배우는 딥러닝 - adu-ino lo kodinghamyeo baeuneun dibleoning

또한, 손글씨 데이터를 픽셀 값 출력을 시작으로, 인식 과정을 단계별로 착실하게 수행해 볼 수 있게 지도합니다.


오탈자:

※p.58, 코드 라인18, print() 앞에 들여쓰기(tab키) 필요합니다.

라인15 for문 명령으로 라인16과 들여쓰기 위치가 같습니다.

(위 사진 참고)

p.58-p.78 모든 코드 라인18번들은 같은 오탈자 있습니다..


보통 MNIST 데이터셋을 사용하여 학습과 평가까지 안내되는 책들에 비해, 이후 과정 즉, <아두이노로 코딩하며 배우는 딥러닝> 64쪽 #학습된인공신경망시험하기 model.predict 과 66쪽 #예측값출력 및 74쪽 #잘못예측한그림 으로 실제값과 비교해보는 실습을 더 해 볼 수 있습니다!

즉, 학습 완료된 모델에게 이미지 중 하나를 주고 무엇으로 분류하는지, 제대로 분류하는지 테스트해보는 코드를 살짝 엿볼 수 있다고 보면 됩니다. "학습 도중 체크포인트 저장 -> 빅 데이터 전처리 모듈 개발 -> 저장된 모델 불러와, 전처리 모듈을 부착하여 데이터 입력 순으로 진행해야 된다"라는 타 저자의 답변이 무색해지듯, 굳이 그렇게 거창하지 않아도 될텐데, 그 와중에 <아두이노로 코딩하며 배우는 딥러닝> 챕터1장 코드들은 무척 반가웠습니다.

아두이노 로 코딩하며 배우는 딥러닝 - adu-ino lo kodinghamyeo baeuneun dibleoning

np.argmax 함수 호출로 라벨값 중 가장 큰 항목을 출력합니다.

예측값과 실제값 모두 '7'로 같습니다.

신경망이 옳게 예측하고 있습니다!

아두이노 로 코딩하며 배우는 딥러닝 - adu-ino lo kodinghamyeo baeuneun dibleoning

아두이노 로 코딩하며 배우는 딥러닝 - adu-ino lo kodinghamyeo baeuneun dibleoning

잘못된 예측의 그림

패션MNIST 데이터셋도 비슷하게 테스트할 수 있고, 예측값과 실제값 비교 및 잘못 예측한 값의 개수와 이미지를 출력해 볼 수 있습니다.

아두이노 로 코딩하며 배우는 딥러닝 - adu-ino lo kodinghamyeo baeuneun dibleoning


챕터1에서는 코랩에서 텐셔플로 실습을 진행하며, 챕터2부터는 아두이노 스케치에서 인공신경망을 직접 구현해 나가는 과정을 보여줍니다. 단일 신경망부터 3층 신경망까지 단일 출력에서 다중 출력 순으로, #순전파 #오차함수 #경사하강법 #최적화함수 #오차역전파 #반복학습횟수 #활성화함수 개념을 하나씩 추가해보는 실습 과정이 챕터3까지 진행되며, 코드 라인마다 도표와 수식으로 친절하게 설명해 주고 있습니다. 이를 토대로 챕터4에서는 노드 일반화를 위해 #배열 이용, 활성화 함수로 #sigmoid 에 이어 #relu #linear 선택, #CrossEntropy오차함수 까지 추가한, myann 이라는 #인공신경망라이브러리 구현합니다.


소스 오탈자:

※책 p.291 소스 "4211_1.ino" 파일이 제공되는 소스폴더에 없습니다.

4210_1.ino 파일을 4211_1.ino 파일로 저장 후 293쪽 따라 진행하면 되는데,

에러가 발생할 겁니다.

책 p.278에 따라, 427_1.ino 소스부터 계속

21번에 input_b가 hidden_b로 변경되어 있지 않아서 그런 거네요.

참고하세요.

수정 후 컴파일은 잘 되는데, p.293처럼 시리얼 출력이 나오지 않는 것은

책 p.288 따라 소스폴더에 제공되는 "myann.ino" 파일에

printf 문(24, 48, 82, 100, 115,116, 119, 135,136, 139, 156, 160, 161, 163)을 주석처리 하지 않았기 때문입니다.


참고:

※ 책 p.293 시리얼 출력에서 소수점이 '?' 물음표로 출력되지 않도록 p.243 따라 platform.txt 파일 수정할 때,

주의! 관리자 권한으로 저장해야 합니다. 아래 참고..

아두이노 로 코딩하며 배우는 딥러닝 - adu-ino lo kodinghamyeo baeuneun dibleoning

명령 프롬프트를 '관리자 권한으로 실행'합니다!

(마우스 오른쪽 클릭, 바로가기 메뉴에서 선택)

아두이노 로 코딩하며 배우는 딥러닝 - adu-ino lo kodinghamyeo baeuneun dibleoning

cd C:\Program Files (x86)\Arduino\hardware\arduino\avr 으로 가서

platform.txt 를 수정할 때 주의할 점은

" compiler.c.elf.extra_flags=-Wl,-u,vfprintf -lprintf_flt -lm "으로

Wl,-u,vfprintf은 콤마 뒤에 공백없이 붙여주어야 합니다!


만든 myann 라이브러리를 사용한 첫 번째 예제는 7세그먼트 입력을 2진수로 출력하기(p.294) 입니다.


참고:

※책 p.309, 4215_1.ino 파일 업로드 도중 뜻하지 않은 메모리 이슈

" 사용 가능한 메모리 부족, 안정성에 문제가 생길 수 있습니다. "가 발생하나,

스케치는 프로그램 저장 공간 10368 바이트(32%)를 사용. 최대 32256 바이트. 전역 변수는 동적 메모리 1778바이트(86%)를 사용, 270바이트의 지역변수가 남음. 최대는 2048 바이트. 사용 가능한 메모리 부족, 안정성에 문제가 생길 수 있습니다.

업로드 되고, 시리얼 출력은 p.318처럼 나옵니다.


아두이노 로 코딩하며 배우는 딥러닝 - adu-ino lo kodinghamyeo baeuneun dibleoning

7세그먼트 디스플레이에 해당하는 2진수 연결 진리표(목표값)에 가깝게 예측값이 나온 것을 볼 수 있습니다.

LED 7개의 0(꺼짐)과 1(켜짐)의 조합은 경우의 수가 참 많습니다. 4개 LED의 각각 0과 1의 조합도 경우의 수가 많습니다. 이 중에서 의미있는 조합만이 수 0부터 9까지를 표현합니다. 이 대응을 7개 입력, 8개 은닉층, 4개 출력층으로 구성된 인공신경망이 학습한 것입니다.

두 번째 예제는 입력과 출력 목표값을 바꿔, 2진수로 7세그먼트 연결 진리표를 학습합니다. 4개 입력, 6개 은닉층, 7개 출력층으로 구성된 인공신경망입니다.

"아두이노 우노의 경우 RAM이 2K 바이트로 용량이 작기 때문에 은닉층을 6개의 노드로 구성해 테스트해 봅니다"멘트가 눈에 띄네요.

그래도 여전히 업로드시 "메모리 부족"이 뜹니다.

아두이노 로 코딩하며 배우는 딥러닝 - adu-ino lo kodinghamyeo baeuneun dibleoning

2진수 입력 7세그먼트 출력 인공신경망

이 예제를 토대로, 7세그먼트 비트열로 매카넘 휠 4개의 모터 제어(전진:1, 후진:0) 조합을 만드는 학습 코드로 변경하는 것이 세 번째 예제입니다.

7비트 조합으로 0(멈춤), 1(전진), 2(후진), 3(좌이동), 4(우이동), 5(좌회전), 6(우회전), 7(좌 대각선 전진), 8(우 대각선 전진), 9(좌 대각선 후진), A(우 대각선 후진)을 표현합니다. 7개 입력, 7개 은닉층, 4개 출력층으로 구성된 인공신경망입니다.

아두이노 로 코딩하며 배우는 딥러닝 - adu-ino lo kodinghamyeo baeuneun dibleoning

네 번째 실습은 왼쪽 및 오른쪽에서 본 물체와의 거리(입력값)에 따른 바퀴 제어(목표값, 예측값)를 학습하는 2개 입력층(왼쪽, 오른쪽 방향), 6개 은닉층, 3개 출력층(오른쪽 전진, 왼쪽 전진, 양쪽 전진)으로 구성된 인공신경망입니다.