chromatic_365의 등록된 링크

 chromatic_365로 등록된 네이버 블로그 포스트 수는 106건입니다.

숫자는 거짓말을 한다 [내부링크]

저자 : 알베르토 카이로 / 박슬라 옮김 출판사 : 웅진지식하우스 출간 : 2020년 10월 13일 정가 : 17,500원 후기 : 데이터를 수집하고 검증하는 과정에서 시간을 오래 소요하다 보니 통계와 그래프에 대한 공부가 필요한 것 같아 가볍게 읽기 시작했던 책입니다. 통계에 대해 깊게 다룬 이론서를 읽는 방법도 있었지만 자격증이나 통계 자체에 대한 공부가 아닌 그래프 사용과 통계, 데이터 전반에 대한 이해도를 올리는 것이 목적이었기 때문에 사례 위주로 쓰여진 이 책을 골랐습니다. 책의 목차는 처음부터 끝까지 사례를 위주로 한 그래프 예시와 분석으로만 이뤄져 있습니다. 기후변화를 둘러싼 진실 공방, 불법체류자 범죄율의 실체, 지구온난화 예측 모델 등의 사례에서 동일한 데이터를 어떻게 가공하고 표시하는지에 따라 달라지는 시각적 정보와 올바른 정보 전달을 위해 필요한 주의 사항들을 중점적으로 설명하기 때문에 관련 전문지식이 없어도 충분히 이해할 수 있을거라 생각합니다. 예시와 그래프로

파이토치 GPU 설치 [내부링크]

이번 포스팅은 이미 그래픽카드 드라이버와 CUDA, 아나콘다가 설치되어 있는 상황에서 진행되는 파이토치 설치 방법입니다. 그래픽카드 드라이버와 CUDA 설치는 아래 포스팅을 참고해주세요. https://blog.naver.com/chromatic_365/222646370769 텐서플로우 GPU 사용 환경 구축 텐서플로우의 기본 설치 설정에서는 CPU를 이용하여 학습하도록 설치됩니다. 하지만 학습양이 많아지면 ... blog.naver.com 1. CUDA 버전 확인 Window + R 키로 cmd 창을 실행한 뒤 >nvcc --version을 입력하면 NVIDIA CUDA 버전을 확인할 수 있습니다. 현재 제 컴퓨터에는 11.2 버전이 설치되어 있습니다. 2. PyTorch 버전 확인 https://pytorch.org/ PyTorch An open source machine learning framework that accelerates the path from research p

파이썬 자동 메일 Ver.2.0 [내부링크]

earth 사이트에서 풍속을 측정해서 텍스트 정보만 전송하던 이전 버전과 달리 실시간 이미지를 캡처해서 첨부하도록 업데이트했습니다. 변경사항을 정리했으니 밑의 전체 코드와 주석을 참고하시면 이해가 편하실겁니다. 변경 사항 -mph 단위에서 km/h로 단위로 수정, 좀 더 직관적인 정보 전달을 할 수 있도록 했으며(mph보다는 km/h 단위가 더 익숙하다고 판단했음.) 이를 위한 수정 과정에서 selenium driver의 클릭 과정 삭제, 스크래핑한 정보 SPD_TEXT와 SPD를 추출하기 위한 과정이 추가됨. -email.mime 라이브러리에서 MIMEMultipart와 MIMEImage 기능을 불러와 텍스트 뿐만 아니라 이미지도 첨부할 수 있도록 변경. -브라우저의 사이트 새로고침과 스크래핑 동작을 00분과 30분에만 실행되도록 변경. from selenium import webdriver from selenium.webdriver.common.by import By from s

포스팅 상황 안내 [내부링크]

논문 작성 및 개인 일정으로 인해 시간이 많이 소요되는 인공지능 분야는 포스팅이 어려운 상황입니다.. 나중에 정리해서 좋은 내용으로 찾아오도록 하겠습니다!

smtplib 을 활용한 파이썬 메일 보내기(+태풍 알림) [내부링크]

태풍의 진행 경과 그림 (출처: 기상청 발표, 웨더아이 제공) 제 11호 태풍 힌남노 때문에 전국이 떠들썩했습니다. 포스팅을 하는 시점에선 이미 태풍이 한국을 빠져나가 피해 복구 등 상황을 정리하고 있지만 지난밤 태풍의 예상 동선의 바로 옆에 있었던 저는 태풍에 따른 풍속 변화를 메일로 보내서 대처할 수 있도록 자동 메일 전송 프로그램을 만들어 봤습니다. https://earth.nullschool.net/ko/#current/wind/surface/level/orthographic=-235.66,30.69,1289 earth :: 전세계의 바람, 날씨, 바다 상태를 보는 지도 슈퍼컴퓨터로 예보하는 현재의 바람, 날씨, 해양 및 오염 상황을 확인하세요. 인터랙티브 애니메이션 맵은 세 시간 간격으로 업데이트됩니다. earth.nullschool.net 기상 정보를 얻는데 사용한 사이트입니다. 링크의 설명대로 전세계의 바람, 날씨, 바다 상태를 보는 지도 프로그램을 제공하는데 저는 바람

인공지능 교과서 (비즈니스 구축부터 신기술 개발까지) [내부링크]

저자 : 이모토 타카시 / 김기태 옮김 출판사 : 성안당 출간 : 2021년 1월 12일 정가 : 19,000원 후기 : 프로젝트를 진행하고, 논문 작성을 하면서 이전과는 비교도 안되게 많은 책들과 자료를 접하고 있습니다. 블로그에 포스팅 중인 책 이외에도 개발 관련 도서들을 많이 보고 있는데 특정 정보나 오류에 대해서 정보를 찾다보니 책 전체가 아니라 특정 장이나 작은 일부분만 읽다 보니 책 전체를 읽어본게 언제인지 기억이 가물가물할 정도였습니다. 책을 기술적인 용도로 보는게 아니라 좀 더 가벼운 무게에서 인공지능에 대하여 넓은 시야로 살펴보고 싶어서 골랐는데 간만에 책을 표지부터 끝장까지 오롯이 읽게 되어서 기분까지 좋았습니다. 일부러 조건을 걸고 찾은 것은 아니었지만 이 책도 안에서 컴퓨터 언어와 코드 구조에 대한 설명은 일절 없습니다. 그래서 더욱 개념과 원리에 집중하면서도 피곤하지 않게 읽을 수 있었던게 아닌가 생각됩니다. 전 책을 크게 3파트로 나누고 싶습니다. 파트 1

깃허브 데스크탑 리눅스 버전 설치 실패 [내부링크]

라즈베리 파이로 작업하고 결과를 올릴 때 항상 깃 명령어로 커밋을 했었는데 저만의 자동 커밋 쉘 스크립트 파일을 만들다가 '리눅스용 깃허브 데스크탑은 없나?' 하는 의구심이 들었습니다. 검색 하던 중 우분투에 깃허브 데스크탑을 설치해서 사용하는 방법을 다룬 포스팅을 발견했는데 둘다 Debian 기반으로 작동되는 OS이니 호환이 될것이라 생각하고 기대반 의심반으로 라즈베리에 설치해봤습니다. https://davelogs.tistory.com/55 우분투(Ubuntu)에서 터미널로 GitHub Desktop 설치하기 이번에는 GitHub에만 대응하기 위해 설치해 사용하고 있는 'GitHub Desktop'의 설치 방법을 정리했다. 사실 아래 링크에서 확인할 수 있겠지만, 'GitHub Desktop'은 GitHub에서 개발/제공하는 Git Client로, 현재.. davelogs.tistory.com sudo apt-get install snapd -y $ sudo apt-get upd

피마 인디언 당뇨병 예측 [내부링크]

아나콘다3 주피터 노트북 환경에서 시작합니다. 텐서플로우와 케라스, 넘파이, 판다스 등과 사이킷런 모듈들을 임포트해줍니다. csv파일에서 불러온 데이터를 바탕으로 헤드값을 확인하면서 컬럼과 인덱스를 정리해줍니다. 샘플들은 0이 아닌 1부터 시작하도록 변경해줬습니다. Matplotlib 히트맵 그래프를 출력합니다. 정교한 그래프를 그리도록 도와주는 seaborn 라이브러리를 통해 각 샘플들 간 어떤 상관관계가 있는지 알아볼 수 있습니다. 그래프에 사용된 heatmap() 함수는 각 항목 간의 상관관계를 나타내주는데 두 항목씩 짝을 지은 뒤 각각 어떤 패턴으로 변화하는 관찰하는 함수입니다. 히트맵 그래프의 교차점 수치를 바탕으로 주요 성분을 비교하는 그래프를 출력합니다. bins값 조절을 통해 그래프의 칸 간격 및 정밀도를 조절할 수 있습니다. 시드값을 입력하고 데이터셋을 로드합니다. 오차행렬과 정밀도 추출을 위한 표시 함수를 정의합니다. 로지스틱 회귀를 통한 학습과 예측을 수행합니다.

딥러닝 프레임워크 선호도 조사와 용어 비교 [내부링크]

인공지능, 딥러닝에 관한 자료를 발간하고 의견을 종합, 조사하는 "towards data science" 사이트에서 2018년도에 딥러닝 개발에 사용되는 프레임워크에 대한 선호도를 조사한 통계 그래프 자료입니다. 딥러닝에 사용되는 프레임워크는 유명한 텐서플로우를 비롯한 케라스, 파이토치 등이 있지만 통계 자료에서는 구글의 텐서플로우가 만점에 가까운 수치로 1위, 그뒤를 케라스가 51점의 점수, 파이토치는 1,2위와는 점수차가 있지만 22점의 점수로 3위에 선정되었습니다. 프레임워크와 라이브러리 용어에 대해서 설명하고 넘어가자면, 프레임워크는 사전적 의미로는 "소프트웨어의 구체적인 부분에 해당하는 설계와 구현을 재사용이 가능하게끔 일련의 협업화된 형태로 클래스들을 제공하는 것"이라고 랄프 존슨(Ralph Johnson)에 의해 정의되어 있습니다. 쉽게 풀자면 프로그래밍에 있어서는 어떤 프로그램을 만들기 위한 기본 틀, 환경이라고 볼 수 있으며 주방에서 음식을 만들때 야채를 썰고, 사골

복합 가스센서 감지 출력 코드 1차 [내부링크]

import time import RPi.GPIO as GPIO GPIO.setmode(GPIO.BCM) time.time() GPIO.setwarnings(False) #라즈베리 파이의 GPIO입력을 받아 BCM모드로 셋팅합니다. 시간 표시를 위해 time 모듈도 임포트해줍니다. 일부 소자들의 출력 과정에서 오류 메세지가 표시되는 경우가 있는데 GPIO.setwarnings(False)를 통해 처리해줍니다. #Front sensor GPIO.setup(23, GPIO.IN, pull_up_down=GPIO.PUD_DOWN) GPIO.setup(24, GPIO.IN, pull_up_down=GPIO.PUD_DOWN) #Left sensor GPIO.setup(27, GPIO.IN, pull_up_down=GPIO.PUD_DOWN) GPIO.setup(22, GPIO.IN, pull_up_down=GPIO.PUD_DOWN) #Right sensor GPIO.setup(20, GPIO.

에러 해결 기록 [내부링크]

#라즈베리파이 ver.4와 윈도우즈 환경에서 실시한 기록들입니다. 1. 웹 폰트 깨짐 현상 해결 크로미움이나 개발창에서 실행시 한글 폰트가 깨져서 네모 기호로 나타나는 현상을 해결. $sudo apt-get install fonts-unfonts-core $sudo apt-get istall ibus-hangul $sudo reboot 를 통해 폰트를 설치하고 ibus에서 한글을 설치 및 설정한 뒤 재부팅을 통해 적용했습니다. 2. CV모듈 설치 에러 가상환경을 설치한 후 cv모듈을 설치하는 과정에서 코드가 제대로 실행되지 않아 추가 작업을 해줬습니다. $pip install opencv-contrib-python==4.1.0.25 위 코드로는 설치가 완료되지 않았으며 $conda update anaconda-navigator $conda update navigator-updater $pip install opencv-python 의 추가 코드로 설치를 완료했습니다. 3. Attri

와인 품종 예측 [내부링크]

비뉴 베르드(Vinho Verde) 지방에서 만들어진 레드와인 샘플 1,599개와 화이트 와인 4,898개의 등급, 맛, 산도를 측정해 만든 데이터를 이용해 품종을 예측하는 코드입니다. 학습한 모델을 저장하고 다시 불러오면서 비교된 수치를 바탕으로 오버피팅을 방지하고 불필요한 작업이 중단되는 과정이 담겨있습니다. 케라스와 판다스, 넘파이 등과 함께 이번 코드에서 쓰일 ModelCheckpoint와 EarlyStopping 모듈도 임포트 해줍니다. csv 데이터를 불러오는 과정에서 sample() 함수를 이용해서 전체 샘플의 15%로 학습을 하도록 설정합니다. 후술할 Epoch 횟수가 커지면서 학습 시간이 너무 길어지기 때문에 결과 출력의 속도 향상을 목적으로 해당 기능을 사용했습니다. 퍼셉트론은 총 4개의 층으로 이루어져 있으며, 렐루와 시그모이드 함수를 사용하여 학습합니다. 학습이 진행되면서 hdf5 확장자를 가진 모델이 Epoch마다 실행된 결과가 파일로 저장되는데 학습 정확도는

데이터 사이언티스트의 조언 [내부링크]

빅데이터를 처리하는데 가장 효과적인 기법은 머신러닝(혹은 딥러닝), 머신러닝에 꼭 필요한 빅데이터. 이둘은 밀접한 상관관계를 가지고 4차 산업혁명을 거지며 새로운 화두이자 블루오션으로 떠오른 대표적인 키워드들입니다. 취업에 관한 진로 고민을 하면서 최종 학력, 업계 전망, 실제 첫 취업 이후 자신의 성장 등에 대해서 생각을 많이 했는데 데이터 분석 준 전문가, 국가 기술 빅데이터 분석기사 등의 자격증이 제시되어 있지만 여러 자료나 영상등을 보면서 도움을 많이 받았습니다. 유튜브 영상도 첨부합니다. 보면서 생각도 다시 하게 되고 도움이 많이 된 영상들입니다.

1. 과적합 (Overfitting) [내부링크]

과적합(=overfitting)이란 모델이 학습 데이터셋 안에서는 일정 수준 이상의 예측 정확도를 보이지만, 새로운 데이터에 적용하면 잘 맞지 않는 것을 말합니다. 위 그림을 보면 주어진 샘플을 구분하도록 정확하게 붉은선이 그어져 있습니다. 하지만 이 붉은선은 특정 경우에만 최적화되어 새로운 데이터가 적용되면 정확히 두 그룹으로 분류하지 못하게 됩니다. 반대로 학습이 부족하다면 녹색 선처럼 두 그룹을 제대로 못하기도 하지만, 이글에서는 과적합을 위주로 알아보도록 하겠습니다. ※언더피팅(=Underfitting) : 모델의 표현력이 부족해서 훈련 데이터도 제대로 예측하지 못하는 현상. 위 그래프에서 파란선은 훈련 데이터(=Trainning Set), 붉은선은 실제 데이터(=Validation Set)의 오류 정도를 뜻합니다. 처음에는 훈련 데이터와 실제 데이터 모두 에러가 작아지지만 일정 횟수 이상 반복할 경우, 훈련 데이터의 오류만 작아지고 검증 에러는 계속 커지게 되는 것을 볼 수

붓꽃 품종 구별 [내부링크]

아이리스, 일명 붓꽃은 꽃잎의 모양과 길이에 따라 여러가지 품종으로 나뉘는데 이를 여러 조건을 통해 분류해내는 프로그램입니다. 모듈을 임포트해줍니다. sklearn의 LabelEncoder() 함수가 임포트 되는데 이는 후술하도록 하겠습니다. 데이터를 입력하고 일부를 확인합니다. 꽃마마 가진 특징과 종이 구분되어 있는 것을 알 수 있습니다. seaborn과 pairplot 함수를 통해 전체 데이터를 그래프로 확인합니다. 사진 이미지로 볼때 붓꽃은 비슷해 보였는데데이터화된 자료를 그래프로 보니 차이가 많이 나네요. 케라스를 이용해 아이리스의 품종을 예측하는 과정입니다. Iris-setosa, Iris-virginica 등과 같이 데이터 안에 문자열이 포함되어 있는데 이때는 numpy보다는 pandas로 불러와 X, Y를 구분해 주는 것을 추천합니다. 이때 Y값이 숫자가 아니라 문자열이기 때문에 문자열을 숫자로 바꿔주려면 클래스 이름을 숫자 형태로 바꿔줘야 하는데 위에서 언급한 Labe

(주) 우아한 형제들 - 김범준 대표의 인터뷰 [내부링크]

컴퓨터 전공, IT 전공자들에게 통칭 ‘네카라쿠배(네이버, 카카오, 라인, 쿠팡, 배달의민족)’ 라는 단어와 함께 워너비 회사로 손 꼽히는 배달의 민족, 우아한 형제들의 대표를 맡고 있는 김범준 CEO의 인터뷰 기사와 자료입니다. 전자공학과로 진학해서 동아리 회장, 프로젝트 구성원이자 팀장, 컴퓨터 관련 전공으로 오기까지 많은 역할과 다양한 것들을 배웠는데 최근 들어 프로그래밍 업무에 대해서 관심을 가지고 영상을 보던 중 이 영상은 신선한 점이 많았습니다. '프로그래머는 코딩만 잘하면 전부인가?', '혼자서만 일을 잘해도 되는 직업인가?', '프로그래머가 팀과 회사에서 가지는 역할과 의미는 무엇인가?'에 대한 새로운 답변이라 영상 보면서도 스스로 생각을 많이 하게 만들었습니다. 본인의 전공 능력도 당연히 중요하지만 단순히 코딩을 통해 모든 일이 해결되는 것은 아닐뿐더러, 코딩을 왜 하는것인지, 문제에 직면했을때 최적의 해결법은 무엇인지에 대해서도 다시금 생각을 하게된 좋은 자극이었습

라즈베리파이 딥러닝 결과 영상 [내부링크]

라즈베리파이를 이용한 딥러닝 프로그램들의 작업 과정과 결과물을 담은 영상입니다. MNIST와 Keras, Collab등을 활용하였으며, 주피터 노트북과 파이썬으로 진행했습니다. 손글씨인식, 얼굴 인식을 통한 졸음 방지 프로그램, 침입자 경보의 내용이 담겨있습니다.

[에러 해결] 파라미터 갯수 에러 [내부링크]

Exception has occurred: TypeError takes 1 positional arguments but 2 were given tf.data.Dataset.from_tensor_slices() 사용 중에 위와 같은 에러가 발생했습니다. 해당 함수의 파라미터는 1개만 받을 수 있는데 2개를 입력해서 발생한 에러로 두개의 파라미터를 하나로 묶어서 해결했습니다.

함수와 문법 정리 [내부링크]

__future__ >> 파이썬3의 문법을 파이썬2 버전에서 사용할 수 있게 해주는 문법입니다. absolute_import >> 표준 모듈과 동일한 이름의 로컬 모듈을 사용 가능하게 해줍니다. division >> 파이썬3 스타일의 나누기 지원해줍니다. print_function >> 이 구문을 가장 위에 적어두면 어떤 버전을 실행하든 파이썬 3문법인 print()를 통해 콘솔 출력이 가능합니다. unicode_literals >> 유니코드 문자열 출력에 필요한 문법입니다. round() >> 파이썬 내장 반올림 함수로 (3.14)를 넣는다면 소수점 첫자리에서 반올림, (3.14, x)를 입력하면 소수점 아래 x자리까지 표시되도록 x+1자리에서 반올림을 실시한다. import platform print(platform.architecture()) >> 설치된 파이썬 비트수 확인 #자연어_공부_파트 """ df.isnull.sum() >> df의 컬럼별 결측값(NaN) 수 합산 이후

DNN 패션 분류기 진행중 [내부링크]

주피터 노트북 텐서플로우 2.2.0 환경에서 Numpy, Matplotlib, Keras 를 임포트하여 Fashion-Mnist 분류기를 만들고 있습니다. 학습셋과 테스트셋으로 나눠진 데이터를 이용해 4층 퍼셉트론 설계, 1층은 입력 모양을 잡은 후 렐루 함수 활성화 2층은 배치 정규화층을 추가 3층은 10개의 덴스층을 설정했고 4층은 ReLU를 적용하여 출력되도록 했습니다. 손실함수와 옵티마이저는 아담과 sparse_categorical_crossentropy 로 설정했습니다. 처음 입력된 데이터는 csv파일이 아니라 케라스 데이터셋을 이용해 온라인으로 불러오는데 셔플, 리핏하는 과정을 새로 익히고 위의 설계대로 딥러닝 결과를 출력했지만, -퍼셉트론 층 추가와 함수 변경으로 정확도 상승 기대 -learning rate와 batch size 변경으로 정확도와 학습 속도 상승 기대 -임의의 값으로 최적의 학습 하이퍼 파라미터를 정하는 것이 아닌 학습 모델을 저장하고, 테스트셋의 오차가

모두의 딥러닝 [내부링크]

저자 : 조태호 출판사 : 길벗 출간 : 2020년 01월 27일 정가 : 24,000원 후기 : 파이썬 공부 이후 본격적으로 딥러닝 코딩 공부를 하기 위해 처음으로 구매한 책입니다. 오프라인 매장에서 다른 책들과 비교하며 선정했는데, 글의 가독성도 좋았고 그림 자료와 코드들도 정리가 잘 되어있어 초기 공부에 도움이 많이 되었습니다. 출판사에서 코드가 제공되는데 책과 코드를 보는데 그치지 않고, 직접 한줄씩 작성하면서 조금씩 바꾸는게 좀 더 공부에 도움이 많이 될거라 생각합니다.

데이터베이스 시스템 [내부링크]

저자 : Abraham Silberschatz, Henry F.Korth, S. Sudarshan 출판사 : McGraw-Hill 출간 : 2021년 08월 05일 정가 : 45,000원 후기 : 딥러닝 공부를 하면서 데이터 공부에 대한 필요성과 연계 지식이 필요하여 구매한 책입니다. 데이터베이스에 대한 이론적인 설명부터 설계, 분석까지 내용이 담겨있기 때문에 데이터베이스에 대한 공부를 제대로 시작하려면 이책이 좋을 것으로 생각합니다. 하지만, 전공서적으로 많이 사용된다는 것이 반증하듯 딱딱하다 생각되거나, 내용이 너무 포괄적이라 특정 기능에 대한 책이라기보다는 데이터베이스에 대한 사전같은 성격이 크다고 느껴질 수도 있을 것 같습니다. 대부분의 강의들이 특정 프로그램을 위주로 설계, 실행같은 실무적 성격이 크다면, 이 책은 이론적인 내용이 자세하게 서술되어 있어 데이터베이스에 대한 전체적인 공부를 깊게 하는데 좋을 것 같습니다.

파이썬 머신러닝 완벽 가이드 [내부링크]

저자 : 권철민 출판사 : 위키북스 출간 : 2021년 02월 07일 정가 : 38,000원 후기 : 온라인 강의를 접하면서 구매하게 된 동명의 도서입니다. 텐서플로우를 다루는데 대부분 사이킷런의 기능으로 서술되어 있고, 코드와 내용설명이 대부분이라 초심자보다는 어느정도 딥러닝을 다룰 줄 아는 사람에게 추천하는 도서입니다. 다른 프레임워크를 사용하거나, 전체적인 함수와 이론을 배우고 싶은 분들에게는 조금 성격이 맞지 않겠네요.

빅데이터 포털 [내부링크]

빅데이터, 인공지능 관련 경연 소식을 접했다가 본가가 위치한 창원시의 빅데이터 포털을 알게 되었고, 이후 경남, 전국 단위로 빅데이터 포털을 검색하면서 딥러닝에 필수인 빅데이터들이 여러 분야에서 공공데이터로 제공된다는 것을 알게 되었습니다. 사이트 별로 갱신주기, 목적 등이 기재되어 있고 이용, 연구 현황 등도 일부 표시되어 있어 딥러닝 공부와 연구 목표 설정에 큰 도움이 될 것으로 생각합니다. https://bigdata.changwon.go.kr/portal/main/main.do 창원시 빅데이터 포털 창원시 코로나19 현황 2021.08.29.(일) 18:00기준 (단위 : 명) 확진자 합계 2,651 (+24) 전일대비 입원중 703 명 (+24) 완치 1,943 명 (-) 사망 5 명 (-) 의심환자 검사중 4,999 명 검사결과(-) 513,125 명 자가격리자 2,202 명 출처 : 창원시 코로나19 현황 (자료 갱신 주기 : 09:00, 13:00 18:00) 코로나1

CNN 이미지 전처리 공부중 [내부링크]

※아직 공부중인 단계라 세부 마크다운 제목은 달지 않았습니다. 모듈을 임포트해줍니다. 참고용이라 실제로 연습때 쓰이지 않은 모듈도 여럿 임포트돼있습니다. 파일을 불러와 형태를 변환해 줍니다. 여러 사진중 개 사진을 한장 불러와 표시했습니다. 크기를 조정하는 'resize()' 함수를 정의한후 300*300의 지정 사이즈로 크기 변환하여 좌측에 표시했습니다. 랜덤하게 회전시키는 함수 정의 후 실행해 봤습니다. 2D 환경에서 방향은 4방향이므로 0~3의 횟수로 회전하도록 했습니다. 랜덤한 영역을 crop(추출) 하도록 정의했습니다. 본 사진에서는 150*150의 사이즈로 crop 했습니다. 데이터 정규화 과정입니다. 주석에 표시된대로 픽셀값을 [-1,1]로 변환해줬습니다. 이미지 증식을 위한 종합 함수를 정의했습니다. 위에서 진행한 resize, random crop, 회전, 반전이 모두 시행됩니다. 이미지 증식을 위해 random_jitter 함수를 이용했으나, 검증 데이터나 테스트

AI Korea 2021 후기 [내부링크]

9/2에 부산 벡스코에서 개최된 AI Korea 전시회에 다녀왔습니다. 부산 주최인 만큼 부산을 거점으로 한 인공지능, 데이터베이스 클라우드 기업이 많았고 부산 소재 대학교들과 울산, 창원 등도 종종 보였습니다. 들어가면서부터 트위니 자율주행로봇 개발 전문기업. 물류센터의 자율주행 오더피킹 카트, 자율주행 운반대차, 자율주행 호텔 서비스 로봇. 모바일 메신저 개발. twinny.ai 회사의 자율주행 로봇이 나눠주는 회사 소개 책자를 받으면서 인공지능을 주제로 한 전시회인 것을 확실히 느끼고 여러 회사의 제품 설명과 기술에 대한 안내를 들으면서 관람을 진행했습니다. 전공과 관련한 시각으로 보다보니 아무래도 클라우드 기술 보다는 딥러닝, 자연어처리 등을 좀더 중점적으로 보게 되었는데, 홈 AI-based search, chatbots and smart devices. Insight engine and conversational tools based on Deep Learning, sem

딥러닝 텐서플로 교과서 [내부링크]

저자 : 서지영 출판사 : 길벗 출간 : 2021년 04월 30일 정가 : 28,000원 후기 : 모두의 딥러닝 책 공부를 거의 끝낸 시점에서 새로운 책을 찾다가 목차와 글 구성, 가독성 등을 면밀히 고려해서 선정한 다음 단계 책입니다. 전체적으로 다루는 내용은 이전 책과 공통적인 부분이 있긴 하지만 '모두의 딥러닝'에서는 학습법과 활성화 함수, 딥러닝에 대한 맛보기 내용과 챕터별 한개의 예제가 있었다면, 이 책은 딥러닝 알고리즘, 합성공 신경망, 시계열 분석, 성능 최적화에서 자연어를 거쳐 강화학습까지 좀 더 깊이 있게 내용을 다루고 있습니다. 예제 중 하나인 붓꽃 품종 구별 판단 코드의 경우 이전에는 그래프 출력과 양극화, 소프트맥스를 설명하기 위한 코드였다면 이번 책에서는 하이퍼 파라미터를 이용한 성능 최적화를 주제로 정규화, 규제화, 표준화 등과 같은 세부 방법과 결과의 차이를 자세하게 알려주고 있습니다. 예제 코드와 설명도 각 라인마다 숫자를 붙혀 자세하게 설명하고 있고,

붓꽃 품종 예측_개선 모델 [진행중] [내부링크]

이전 붓꽃 품종 예측 모델은 양극화, 소프트맥스를 거쳐 교차 엔트로피를 통해 최종 예측 정확도를 출력하는 코드였습니다. 이번에는 하이퍼 파라미터 조작을 이용해 성능 최적화를 해봤습니다. 이전 코드와는 데이터 로드, 모델의 계층과 구성, 학습 모델 선택 등에서 차이가 있습니다. 모듈을 임포트합니다. 이전에는 csv 파일에서 데이터를 로드했는데 이번에는 사이킷런에 있는 붓꽃 데이터를 바로 불러왔습니다. 붓꽃을 구별하는 피처별로 데이터를 정리해서 확인한 후 훈련셋과 검증셋을 분리합니다. 기본 모델(=Basic Model)의 설정과 모델 정보입니다. 이전에 비해 층수와 노드수가 훨씬 많아졌으며, 최종 출력층에서 소프트맥스를 실행했습니다. 1000번의 epochs를 실시합니다. 최적화 알고리즘은 아담을 사용했습니다. 시각화 자료와 최종 결과 출력창입니다. evaluate()의 리스트 중 loss와 metrics를 선택하여 각각 정의했고, 출력 메세지는 이전과 다르게 포멧팅을 해봤습니다. ro

RNN 간이 영화 리뷰 분류 [내부링크]

LSTM 과 CNN을 조합하여 'imdb' 에서 가져온 영화평을 토대로 긍정 or 부정의 두가지 결과만을 분류합니다. 사전에 데이터 전처리가 끝난 정보이기 때문에 원-핫 인코딩 과정과 상세 결과 출력 없이 정확도만을 보여주는 연습용 코드입니다. CNN 공부 다음으로 RNN 공부를 하고 있는데 정의, 원리부터 상세 이용까지 이전보다는 많이 어렵다는 느낌을 많이 받고 있습니다. 모듈 임포트 후 imdb에서 데이터를 가져옵니다. RNN과정에 쓰일 Embedding 과 LSTM도 볼 수 있습니다. 데이터 입력과 학습셋, 테스트셋 설정을 해줍니다. 주석 내용과 같이 첫 층에서 Embedding을 거친후, 과적합을 피하기 위해 드랍아웃을 실행, 이후 컨볼루션과 LSTM을 혼용하여 모델을 설정해줍니다. 출력층 활성화 함수는 시그모이드를 선택하였습니다. 학습을 진행합니다. 최종 출력 퍼센트는 두가지 방식으로 출력해봤습니다. 아무래도 포멧팅에 있어 밑에줄이 좀더 간결해 보입니다. 시그모이드 함수를

AI 챗봇에 관한 고찰 [내부링크]

https://www.technologyreview.kr/why-ai-chatbots-fail-lee-luda-part-1/ AI 챗봇은 왜 실패하는가 : 이루다가 남긴 과제Ⅰ - MIT Technology Review 이루다는 왜 실패했을까? AI 챗봇에 대한 기대가 커지고 있지만, 일반 소비자의 기대를 만족할 수준의 AI를 구현하기에는 아직 한계가 있다. www.technologyreview.kr https://www.technologyreview.kr/why-ai-chatbots-fail-lee-luda-part-2/ AI 챗봇은 왜 실패하는가 : 이루다가 남긴 과제 Ⅱ - MIT Technology Review 이루다 문제가 불거진 이후 인공지능에 대한 규제와 감시 논의가 활발해지고 있다. 그러나 규제가 실제 문제를 해결할 수 있을지는 미지수다. www.technologyreview.kr 2021.03.20 MIT Technology Review 에서 최은창님이 다룬 인공지능

자연어 처리 환경구축 및 JVM 에러 [내부링크]

RNN까지의 딥러닝 공부를 진행한 후 프로젝트 주제를 찾으면서 자연어 처리 공부도 시작했습니다. jdk 파일을 통한 자바 설치 후 JPype1 파일도 주피터 노트북 파이썬 버전인 3.8에 맞춰 cp38로 설치했는데 한글 자연어 처리를 가능하게 하는 KoNPLy 라이브러리에서 Komoran을 사용하면 계속 에러가 발생했습니다. Okt 같은 다른 기능은 문제없이 사용했는데 Komoran은 계속 에러가 나서 해결법을 찾는중입니다. 맨 마지막 코드 에러 사진은 한글 토큰화 코드에서 난 JVM 버전 불일치 에러인데 에러 코드를 보면 파이썬은 64bit인데 JVM은 32bit라고 돼있습니다. 하지만 'JPype1-1.3.0-cp38-cp38-win_amd64' 파일도 그렇고 64bit에 맞춰서 설치했고 path 설정도 완료했기 때문에 검색을 해봤는데 가상환경 설치를 통해 해결하는 방법이 있다고 합니다. 이부분은 해결 후 다시 정리할 예정입니다. <순서> 1. jdk 파일 설치 2. java p

2. 경사 하강법 (Gradient Descent) [내부링크]

경사 하강법 그림 경사하강법은 학습률과 손실함수의 순간 기울기를 이용하여 가중치1를 업데이트하는 방법입니다. 경사의 지점에서 미분 기울기를 이용하여 오차를 비교하고 최소화하는 방향으로 이동시키는데 이때 오차를 구하는데 사용하는 것이 손실함수입니다. 가중치1 : 입력 값이 연산 결과에 미치는 영향력을 조절하는 요소 경사하강법은 손실 함수의 비용이 최소가 되는 지점까지 기울기가 낮은 쪽으로 계속 이동시키는 과정을 반복하는데, 이 과정에서 성능이 나빠지거나 시간이 오래 소요되는 문제가 발생합니다. 이러한 문제들을 해결하기 위한 개선책으로는 배치 경사 하강법, 확률적 경사 하강법, 미니 배치 경사 하강법이 있습니다. BGD 배치 경사 하강법 (Batch Gradient Descent, BGD) 전체 데이터셋에 대한 오류를 구한 후 기울기를 계산하여 모델의 파라미터를 업데이트하는 방법입니다. 전체 훈련 데이터셋에 대한 가중치를 편미분하기 때문에 학습이 오래 걸리는 단점이 있습니다. SGD 확

3. SGD와 옵티마이저 (Optimizer) [내부링크]

옵티마이저는 데이터와 손실 함수를 바탕으로 모델의 업데이트 방법을 결정하고 학습을 안정적으로 만들고 속도를 빠르게 해줍니다. 확률적 경사 하강법의 파라미터 변경 폭이 불안정한 문제 등을 해결하는데 사용되는 옵티마이저에 대해 경사하강법 파생 모델들 위주로 알아보겠습니다. 확률적 경사 하강법 (SGD, Stochastic Gradient Descent) 모멘텀과 네스테로프 모멘텀, 학습률 감소 기법을 지원하는 경사 하강법입니다. ※자세한 설명은 경사 하강법 포스트를 참고. keras.optimizers.SGD(lr=0.01, momentum=0.0, decay=0.0, nesterov=False) <파라미터> · lr: 0보다 크거나 같은 float 값. 학습률. · momentum: 0보다 크거나 같은 float 값. SGD를 적절한 방향으로 가속화하며, 흔들림(진동)을 줄여주는 매개변수입니다. · decay: 0보다 크거나 같은 float 값. 업데이트마다 적용되는 학습률의 감소율입

붓꽃 품종 예측_개선 모델 [내부링크]

이전 붓꽃 품종 예측 모델은 양극화, 소프트맥스를 거쳐 교차 엔트로피를 통해 최종 예측 정확도를 출력하는 코드였습니다. 이번에는 하이퍼 파라미터 조작을 이용해 성능 최적화를 해봤습니다. 이전 코드와는 데이터 로드, 모델의 계층과 구성, 학습 모델 선택 등에서 차이가 있습니다. [진행중]으로 표시되던 코드에서는 이전 학습했던 코드들과 동일하게 함수를 사용했는데 이번 코드에서는 학습층의 변경 뿐만 아니라 옵티마이저를 비롯한 함수들의 세부 파라미터에 대한 공부를 바탕으로 더욱 개선해봤습니다. 모듈을 임포트합니다. 이전에는 csv 파일에서 데이터를 로드했는데 이번에는 사이킷런에 있는 붓꽃 데이터를 바로 불러왔습니다. 붓꽃을 구별하는 피처별로 데이터를 정리해서 확인한 후 훈련셋과 검증셋을 분리합니다. 기본 모델(=Basic Model)의 설정과 모델 정보입니다. 이전의 붓꽃 품종 구별 모델에 비해 층수와 노드수가 훨씬 많아졌으며, 최종 출력층에서 소프트맥스를 실행했습니다. 1000번의 epo

Workbench CSV 임포트 오류 [내부링크]

워크벤치에서 데이터베이스를 만든 후 테이블에 Customer.csv 파일을 임포트해줍니다. 화면 중간에서 데이터들을 확인할 수 있습니다. mem_no, gender, birthday 등으로 구분된 데이터들이 보입니다. 하지만 임포트 결과창에서는 0개의 레코드 즉 레코드가 임포트되지 않았다는 결과가 표시됩니다. 문제를 해결하기 위해 csv파일의 연결프로그램을 메모장으로 설정해서 열어보겠습니다. 레코드들과 하단의 UTF-8 인코딩 정보가 보입니다. 저장 화면에서 인코딩을 UTF-8로 해서 다시 저장해 워크벤치에서 동일하게 임포트 해보겠습니다. 2661개의 레코드가 성공적으로 임포트 되었습니다.

단어 예측 [내부링크]

DB 학생과 코딩에 관한 대화기록을 바탕으로 학습시켜, 입력된 단어의 다음에 올 단어를 자동으로 추천하는 코드를 만들었음. 자연어 전처리와 입력, 저장이 손이 많이 가서 보다 효율적인 동작을 위해 의논하며 진행. 1. 데이터 처리 1) 대화 기록 텍스트 파일을 두개 받았음. 2) with으로 불러온 후 list형으로 각자 변환하여 하나의 리스트로 합침. [cp949 ERROR] -> 인코딩 형식 수정으로 해결 3) 통합 텍스트 파일로 저장 4) 판다스로 불러와 컬럼을 구분하여 5) 불필요한 이름, 시간을 제외한 대화 기록만 남기는 것을 목표로 정리 ']'로 컬럼을 구분했는데 3개로 예상했던 것과 달리 대화 부분 이후에 추가로 None값이 대부분인 컬럼 2개가 더 생겼음. 채팅 정보가 아닌 대화 중간에 있는 대괄호 때문인 것으로 분석하여 nan1과 nan2로 이름 지은후 None값 갯수 차이를 구분 지으니 약 16,500개 중 13개만 해당되어 삭제함. '오전', '오후'를 포함하는

한글을 이용한 자연어 연구 [내부링크]

자연어 처리에 대해 공부하면서 한글을 처리하는 라이브러리와 한글이 가지는 독특한 특징에 대해서도 많은 관심을 가지게 되었습니다. 한글은 특히 자연어 연구가 어려습니다. 그 이유는 다른 언어에 비해 늦은 시기에 여러 장점을 흡수해 과학적으로 만들어졌기 때문입니다. 효율이 극대화 되었다는 것은 그만큼 과학적이고 분석이 어렵다는 뜻으로도 생각할 수 있습니다. (습득과 사용의 난이도와는 별개입니다.) 한글(한국어)를 포함한 일본어, 몽골어는 교착어에 속하는데 실질 형태소인 어근에 형식 형태소인 접사가 결합되어 문장 내에서의 각 단어를 파생시키거나 문법적 관계를 나타냅니다. 어간이 변하지 않고 접사가 붙어 단어를 이루고 문법적 기능이 정해지는 언어인 교착어는 아래와 같은 특징들이 있습니다. 1. 접사 추가에 따른 의미가 파생됩니다. 하다, 한다, 하시다, 하신다, 하셨다, 하였다... 등과 같이 의미가 다르게 파생됩니다. 2. 유연한 단어 순서 규칙으로 해석에 유연하게 적용됩니다. 영어는 이

한글 단어 예측 추천 코드 [내부링크]

10.07 자연어 강의 진도를 많이 나가고 싶었는데 전공 강의와 다른 코드 실습으로 영상은 몇편 보지 못했음. 하지만 정규식 활용 챕터에 들어가면서 이전 실습이 영양분이 되서 이해가 잘 되고 있음. 한글 기반 자동 단어 추천 코드 1) 카카오톡 기반 과적합이 발생하면서 정확도가 100%로 고정되는 문제 발생. 하지만 K-Fold 를 이용하거나 검증셋으로 나눈다 하더라도 과적합의 원인인 적은 데이터, 새로운 적용 데이터 부재, 너무 깔끔한 데이터 등의 문제가 해결되지 않으므로 굳이 두개의 셋트로 나눠서 정확도를 상식선의 수준으로 낮춰서 '표현'하는 것이 의미가 없다고 생각. 입력한 단어에 대해 예측 추천 단어가 표시되는데 단어 단위로 출력은 잘 되나, 결과가 우리가 흔히 유추하는 결과와 맞지 않거나 (주관적) 결과의 변화폭이 작은 문제가 있음. 데이터가 너무 적고, 대화체와 줄임말 등으로 인해 실질적으로 학습에 적용되는 코퍼스가 너무 적었기 때문으로 추정. 2) 현대소설 기반 카카오톡

한글 단어 예측 추천 코드2 [내부링크]

10.12 Mecab을 이용한 형태소 구분을 완료했고, 텍스트 토큰화까지 진행. 딥러닝 학습 단계에 들어갔는데 시간이 오래 걸리기도 하고 데이터 입력단 부분 수정을 할게 남아서 다음 날에 하기로 했습니다. 전체 과정은 크게 1. 모듈 임포트 <GPU check> 2. 대화 내용 추출 및 통합 3. 한글 이외 제거 (=정리 과정) 4. 한국어 임베딩 (2가지 방법으로 진행) <코퍼스 파일 추출본 불러와 바로 진행> 5. 모델 생성 및 훈련 인데 세부 내용 및 에러는 코딩 주석을 참고하여 수기로 정리중. (미완 상태)

깃허브 및 깃허브 데스크탑 사용 가이드 [내부링크]

아직 내용면에서 담지 못한 것들이 많지만 초기 설명을 통해 깃허브를 사용하는데 불편함이 없도록 사진과 함께 설명해보았습니다. 첨부파일 깃허브_설명_Ver.2.0.zip 파일 다운로드

기상정보 자동 스크래핑 코드 진행 [내부링크]

pip3 install selenium==3.141 로 버전을 낮춰서 find_element_by_xpath()를 사용할 수도 있지만 그대로 두고 안내 메세지대로 find_element()를 사용하기로 결정. By를 import 해주고, 각 연도, 월, 일별로 선택을 해서 불러오는 것까지 자동화 성공. 하지만 날짜 하나하나를 일일히 지정을 했기 때문에 코드가 굉장히 길어짐. xpath 양식이 str로 되어있기 때문에 list로 변환을 해서 i 부분만 정수로 치환, 계속 증가하게 해서 1~30의 변수로 변하게 한다던가 여러 방식을 고민해봤지만 그부분은 반복되게 하지 못했음. 하지만 날짜를 선택해서 표시하는 것까진 자동화를 했기 때문에 작업하는데 가능성이 보임. 자세한 설명은 코드 완성후에 올릴 예정. 시험 영상은 2012년 11월의 1일 ~ 10일 2012년 12월의 1일 ~ 10일에 해당하는 기상정보를 자동으로 클릭, 표시하는 영상.

기상정보 자동 스크래핑 코드 진행2 [내부링크]

위에서부터 Selenium, Time 등 필요한 모듈을 임포트해주고 현재 사용중인 버전 96.0.46..에 맞는 크롬 드라이버를 지정 경로에서 실행시켜 줍니다. 기상 홈페이지는 2021년 기준의 URL을 입력해서 2022년의 기상 페이지로 열리는데 어차피 연도와 월을 새로 선택하기 때문에 시작 페이지는 큰 상관이 없습니다. 2013.01.01 ~ 2017.01.01의 데이터를 수집하는 것이 목표이기 때문에 while 반복문을 제일 처음에 씌워주고, 이제 연도와 월을 선택해서 해당 날짜의 온도 데이터를 수집하는 과정으로 넘어갑니다. 연도와 월을 고를 수 있는 선택창을 클릭한 후 13년 1월의 코드에 해당하는 110부터 17년 1월에 해당하는 코드까지 설정했는데 다시 보니 16년 12월에 해당하는 63까지 숫자가 작아지는 역순 차감의 반복으로 정정할 필요가 있네요. 달을 선택했으면 각 달마다 일수가 다르기 때문에 반복 일자 구별을 위해 월을 출력하고 출력된 월과 일치하면 해당 일수만큼

아나콘다 환경 구축 [내부링크]

1. 아나콘다 및 주피터 노트북 1) Anaconda 설치 2) pip3 install tensorflow==?? conda search tensorflow 하면 유효한 버전 출력됨. 3) pip install keras 4) pip install opencv-python 5) pip install jupyterthemes 6) jt -t oceans16 -fs 12 (=필자의 개인 취향대로 적용한 디자인) jt -l 하면 테마 목록 확인 가능. 2. 파이토치 1) conda update --all 2) pip3 install --upgrade pip 3) conda search python (필요한 버전들 확인) 4) conda create -n 이름 python==버전 anaconda 실행) conda activate 이름 해제) conda deactivate 이름 5)conda install pytorch torchvision cpuonly -c pytorch 은전한닢 pip3

GIthub Desktop Push Error [내부링크]

깃허브 데스크탑을 이용해서 변경된 내용을 푸시하려니 Author identity unknown *** Please tell me who you are. Run git config --global user.email "[email protected]" git config --global user.name "Your Name" to set your account's default identity. Omit --global to set the identity only in this repository. 과 같은 에러 메세지가 뜨고 커밋이 되지 않았습니다. 해결하기 위해 검색해본 결과 이메일과 이름을 코드 대로 치라는데 코드 입력, 실행으로 해결하는 방법은 코드 내부에서 자체적으로 깃허브에 업로드할 때 에러 해결 방법이라 깃허브 데스크탑 프로그램을 사용하는 입장에서는 도움이 되지 않았습니다. 그러던 중 깃허브 홈페이지에서 조작을 해서 에러를 해결하는 몇가지 댓글들을 봤는데, 최종적으로는 아래

기상정보 자동 스크래핑 코드 진행중3 [내부링크]

스크래핑 초본의 월부분 코드와 저장된 csv 파일 내용, 시간이 반복되면서 하단부 print()로 인해 불필요한 공백이 삽입되었습니다. 출력창에만 공백으로 구분을 하고 csv 저장시엔 내용만 들어가도록 변경합니다. 13년 1월 1일, 매시각마다 온도 정보를 긁어와 저장된 것을 볼 수 있습니다. 하지만 하루가 지나가고 일 단위 날짜가 넘어가면서 에러가 발생했는데 1월 31에서 에러가 발생했습니다. 이유는 하루 기준 지정 변수인 h가 24가 될때까지 24번을 반복 실행해야 하는데 22:50까지만 기상 데이터가 있고 23:50가 있기 때문에 에러가 발생한 것이었습니다. 마지막 날짜에 대한 결측치를 처리했지만 곧바로 에러가 발생했는데 2월 1일 데이터의 경우에는 데이터의 시작이 5:50 이기 때문이었습니다. 결측치 데이터를 처리할 수는 있었지만 중간에 빈 데이터가 너무 많고, 이후 사이트 접속을 하면 6개, 4개의 데이터 밖에 표시되지 않는 경우가 계속 발생해서 스크래핑 대상 사이트를 바꾸

기상정보 자동 스크래핑 코드 진행중 4 [내부링크]

하루를 48개로 나눈 기상 사이트에서 시각별 온도를 스크래핑 해오는데 이번에도 48번의 반복을 돌지 못하고 에러가 발생했습니다. Nosuchelem Error 즉 결측치에 해당하는 xpath, data를 찾을 수 없다는 에러인데 생각을 하다가 우선적으로 try, except를 이용해서 해결을 해보았는데 중간에 어느 지점에서 데이터가 비든, 총 48번의 횟수를 채우지 못하는 경우가 발생하기 때문에 해당 경우는 '데이터 48개 미달'이라는 메세지를 출력하고 다음 날짜로 넘어가도록 했습니다. 이전에는 달라진 사이트와 코드로 인해 데이터가 비어있는 날짜를 넘어가지 못하고 계속 에러에 대한 고민을 하는 시간이 길어졌기 때문에 어떻게보면 첫 파일럿? 코드와 같이 느껴져서 후련한 느낌도 들었습니다. 하지만 이 데이터를 활용해서 학습을 한다고 생각했을 때, 학습 이전에 전처리를 하고 가공을 하는 과정을 먼저 생각해보니 해당 시각에 맞지 않는 데이터가 저장되었다고 생각하니 다시 처리를 해야할 필요성

NoSuchElementException 에러 해결 [내부링크]

기상 정보 사이트에서 크롤링을 통해 xpath 주소의 날짜, 온도를 불러오는 코드 실행 중 반복문의 조건에 맞지 않아 에러가 발생했습니다. 저는 48번의 데이터를 수집하고자 48개 칸의 스크래핑을 반복했는데 데이터가 없어서 48번 미달의 횟수로 실행되자 47번째나 48번째의 데이터를 찾지 못해 NoSuchElementException 에러가 발생한 것입니다. Except란을 보면 NoSuchElementException 에러의 경우 따로 동작을 하도록 예외 처리를 하도록 하였는데 역시나 제대로 실행되지 않았습니다. 찾아보니 코드 상단부에서 해당 에러를 먼저 임포트 해줬어야 하는건데 셀레니움을 사용하는데 익숙하지 않아서 제대로 예외 처리를 못해준 것이었습니다. from selenium.common.exceptions import NoSuchElementException 문구를 통해 상단에 먼저 해당 에러를 임포트 해주니 문제가 해결됐습니다. 에러를 예외처리 동작시킬때는 어떤 에러인지도

개발자들을 위한 생일 축하 코드 [내부링크]

winsound의 beep 소리를 내는 기능을 함수화 하고, 각 음별로 주파수를 dict 형식으로 매칭해서 음높이와 재생 길이를 선택해 노래를 재생해주는 프로그램입니다. 하나씩 해당 음의 주파수를 입력하기엔 번거로워서 Scale_Frequency에 앞서 말한대로 짝을 지어 정보를 저장했고 note라는 함수를 생성해서 편리하게 재생하도록 했습니다. 파이썬 idle, shell로 실행하시는 것을 추천드리며, mac에서는 소리가 나지 않습니다. 생일자의 이름을 입력하면 생일 축하 메세지와 노래가 재생되니 주변에 코딩을 하는 친구들에게 보내서 재밌게 축하해보시는 것도 좋을 것 같네요^^ 첨부파일 HBD2U.py 파일 다운로드

전력 데이터 전처리 코드 [내부링크]

데이터 House1 - Ch1 UK-DALE 은 건물당 총 수요뿐만 아니라 개별 기기의 '실제' 수요를 설명하는 데이터와 함께 분해 알고리즘에 대한 연구를 수행하기 위해 가정용 기기 수준 전기를 기록하는 영국의 공개 액세스 데이터 세트입니다. 집 전체의 경우 16kHz, 개별 기기의 경우 1/6Hz의 샘플 레이트로 제작되었는데 House로 구분된 5채의 집에서 기록되었고 기구들은 Ch로 구분됩니다. Unixtimestamp와 watt의 형식으로 655일 동안 기록된 이 데이터를 전처리해서 전력량 예측에 쓸 수 있도록 가공해 보겠습니다. 개발 과정 코드를 설명하기 이전에 각 커밋별로 어떤 개선의 과정을 거쳐서 완성되었는지 알아보겠습니다. -1차 수정 전력 데이터를 시간대별로 정리하는데 Unix Timestamp를 Datetime으로 변환해야 날짜별로 처리가 가능했는데 datetime.fromtimestamp()를 이용해서 데이터를 처리하다가 원활하게 해결을 하지 못해 판다스로 바로 읽

CSV 저장 중 DataFrame Writer 에러 [내부링크]

전의 전력 데이터 변환 코드에서는 원활하게 작동했던 코드가 이번 기상 데이터 처리 코드에서는 에러 표시가 뜨며 진행이 되지 않는 문제가 발생했습니다. pd.read_csv를 사용한 줄에서 에러가 발생했는데 AttributeError : 'DataFrame' object has no attribute 'writer' 즉, writer 기능에 대한 에러였습니다. 외국 사이트를 포함 정보 검색을 많이 해봤지만, .to_csv 기능을 사용하는 방법을 안내하는데 그치거나 writer에 대한 설명이 부족해서 해결을 하지 못하던 중 데이터프레임과 객체, 모듈의 사용 주의사항에서 원인을 찾았습니다. 데이터프레임 객체 이름(csv)과 모듈 csv의 이름이 중복되어 발생되는 오류로 데이터프레임의 객체 이름을 변경하고 해결했습니다. 사진에서 csv 파일을 읽어와 컬럼명을 지정하고 'csv'라는 변수를 썼는데 csv라는 객체 이름과 똑같이 지정했기 때문에 에러가 난 것입니다. csv 를 csv_origi

'CP949' CSV 파일 저장시 깨짐 오류 [내부링크]

전력 데이터 Final 비정상 처리 사진. 한글 깨짐, 컬럼 미분류 등의 복합적인 문제 발생. 전력 데이터에서 Null값을 처리하고 요일 추가, 휴일 여부 분류를 한뒤 csv 파일로 진행 하려고 하니 위 사진처럼 한글이 깨지고 컬럼 분류가 제대로 되지 않은 문제가 발생했습니다. 컬럼 순서는 Datetime(시각), Day(요일), Holiday(휴일 여부), Seq(순번), Watt(전력량)로 구성했었는데 csv 파일에서는 하나도 반영되지 않았습니다. csv 저장 데이터 프레임으로 확인 결과 내용은 문제가 없음. 임의로 연도와 월을 선택해 판다스로 읽어 확인한 결과 데이터는 문제가 없는 것을 볼 수 있는데 csv 저장하는 코드에서 에러가 난 것 같습니다. 원인을 찾아본 결과 인코딩 문제였는데 최종적으로는 encoding='euc-kr'로 입력해 성공적으로 저장을 완료했습니다. ※ EUC-KR EUC-KR은 한글을 표현할 떄 사용하는 인코딩 방식으로 아시아권에서 사용되는 EUC 방식

CSV 파일 깨짐 오류 (인코딩 에러) [내부링크]

분명 저장하고 내용을 확인했는데 다시 엑셀로 csv 파일을 열어보니 사진과 같이 ??로 표기되고 기호도 틀리게 표시가 돼있습니다. 판다스로 다시 읽었을 때는 문제가 없는데 엑셀에서 csv 파일 오류를 부분적으로 잘못 읽어오는 인코딩 오류인 것 같습니다. 해결은 아래와 같이 진행합니다. 1. 빈 엑셀 파일을 열어서 텍스트/csv에서 데이터 가져오기를 선택합니다. 2. 열 csv 파일을 선택하면 파일 원본의 인코딩 방식이 표시되며, 하단의 데이터 변환을 클릭합니다. 3. 쿼리를 통해 해당 인코딩 방식으로 구성된 csv 파일의 내용을 확인할 수 있습니다.

기상정보 자동 스크래핑 코드 진행중 5 [내부링크]

기상 데이터 및 전력 데이터의 처리가 모두 끝난 시점에서야 지난 오류, 수정 기록들을 다시 올리기 시작했습니다. 매일 매일 에러를 해결하는 바쁜 시간이 계속되다 보니 깃허브 커밋만 계속하고, 다소 설명이 자세하고 긴 글 탓에 시간이 많이 소요되는 블로그 포스팅은 이제서야 올리게 되었네요. 마지막 에러 해결 기록들을 정리하고 완성된 코드를 올리도록 하겠습니다. 4월 1일 10:50부터 시작하는 에러 1차 해결중 코드 본문 11:50 PM부터 시작돼야 할 하루가 그 이전 시각부터 시작되는 에러의 경우입니다. 13년 4월 1일은 10:50 PM부터 시작하는데 코드 본문과 같이 설정했더니 4월 1일 10:50 에러 결과창 10:50 PM, 11:20 PM까지는 처리를 했지만 이후 시각부터는 건너뛰어서 12:50 PM 부터 시작하는 것이라고 잘못 설정이 되었습니다. 결과창에서도 결손 데이터의 경우로 계속 처리되는 것을 볼 수 있습니다. 4월 1일 if(h==h2) 조건 코드 본문 4월 1일

기상 정보 자동 스크래핑 코드 [내부링크]

https://www.wunderground.com/history/daily/gb/london/EGLC/date/2021-1-1 London, United Kingdom Weather History | Weather Underground Skip to Main Content _ Sensor Network Maps & Radar Severe Weather News & Blogs Mobile Apps More Search gps_fixed Log in | Join settings star Current Weather for Popular Cities San Francisco, CA warning 55 F Clear Manhattan, NY 38 F Mostly Cloudy Schiller Park, IL (60176) warning 20 F Snow Bost... www.wunderground.com 전력 데이터와 함께 전력 수요 예측에 쓰일 기상 데이터를 스크래핑하기 위한 코드입

전력 데이터 Null 처리 [내부링크]

전력 데이터 원본 Dat 파일을 변환해서 csv로 저장된 파일의 일부 사진입니다. 중간에 결손된 데이터를 처리하고, 저장하는데는 성공했지만, 데이터를 이용해서 인공지능 학습에 이용하기엔 Null로 처리된 칸은 해결해야할 문제로 남아있습니다. 시계열 데이터에서 결손 데이터를 꼭 분석하고 처리해야 하는데 1차 변환에서 이미 결측값 여부를 확인하고 Null로 저장은 해놨으니 이제는 처리를 할 차례입니다. 시계열 데이터의 결측값 처리 방법으로는 1. 보간 (Interpolation) 2. 이전 또는 다음 값 이용 (Previous/Next value) 3. 이동 평균 (Moving average) 등의 여러 가지 방법이 있습니다. 아래에는 결측값 처리 방법을 분류해놓은 표를 통해 여러 대체 방법들이 있다는 것을 간략하게 보여드리도록 하겠습니다. 시계열 데이터 결측값 처리 방법 유형 결측값 대체 방법 보간 (Interpolation) Piecewise constant interpolation

전력 데이터 요일 및 휴일 처리 (전력 최종) [내부링크]

2013년의 전력 그래프 전력 데이터는 기온 뿐만 아니라 요일의 변화, 휴일의 여부에도 큰 영향을 받기 때문에 해당 인자를 파라미터로 사용하기 위해 컬럼을 생성해 주는 과정이 필요합니다. Null 처리를 통해 결손되는 데이터 없이 csv 파일을 저장했으니, 이제는 요일을 생성하고 요일과 일자에 따른 휴일을 기록하는 과정을 설명해드리겠습니다. 처리 과정에 필요한 모듈을 임포트 한 뒤 요일을 구하는 get_days 함수를 지정해줍니다. get_days 함수는 yyyy, mm, dd 년월일 정보를 조합해서 days 리스트에 저장된 요일을 반환해줍니다. 휴일 여부는 휴일일 경우 1, 아닐 경우는 0으로 저장되는데 주말 외에 휴일로 고려된 사항은 새해 첫날, 성 금요일(=부활절 이틀 전 금요일), 노동절 휴일(5월 첫 월요일), 춘계 휴일(5월의 마지막 월요일), 크리스마스, 박싱데이(12/26)들과 대체휴일입니다. 전력 데이터의 원본인 DALE 데이터는 영국의 런던 소재 5채의 집에서 수집

기상 데이터 시간 정리 및 평균화 (기상 최종) [내부링크]

48분할 기상 데이터 기상 정보를 스크래핑해서 저장된 csv 파일은 기상 포털의 데이터와 동일하게 30분 단위로 나눴기 때문에 48분할의 데이터로 저장되었습니다. 하지만 전력 데이터와 결합해서 사용하려면 시간 주기를 맞춰줘야하기 때문에 같은 시단위의 두 데이터(h시 20분, h시 50분)를 평균을 구해서 새로 저장하도록 하겠습니다. 변수 Temp_AVG에는 두 변수의 평균이 저장되서 각 시각별로 온도값이 저장됩니다. New_list에 저장할때는 정수가 아니라 실수인 데이터들도 있기 때문에(ex.5.5 ) float()를 통해 실수로 만들어주는 과정이 필요합니다. 시간 정보는 년-월-일의 형식으로 조합되서 'DateTime' 컬럼에 저장되고, 시각은 'Seq' 컬럼에 순번으로 표시됩니다. import csv import pandas as pd print('Start Working!!') month = {1:31, 2:28, 3:31, 4:30, 5:31, 6:30, 7:31, 8:31

전력+기상 데이터 결합 코드 [내부링크]

합! 전력 사용량을 예측함에 있어 전력 사용량만으로는 이후 전력 사용 편이가 어떻게 변화할지 예측하기 어렵기 때문에 기상조건이나 휴일 여부, 산업 형태 분포 등도 고려해야 합니다. 이전에 데이터를 각각 처리하면서 전력데이터와 기상데이터 둘이 처리가 완료되었기 때문에 이번에는 데이터들을 합쳐서 전력사용량 예측에 필요한 결합본을 만드는 코드를 리뷰해보겠습니다. 작동에 필요한 모듈을 임포트하고 저장할 'Combined_Data' 폴더를 생성해줍니다. 연도별로 정리가 필요하므로 반복문을 이용해서 2013년부터 2016년까지의 하위폴더를 생성하도록 해줬습니다. try: os.mkdir('./Combined_Data') for y in range(2013, 2017): os.mkdir('./Combined_Data/'+str(y)) print('폴더 생성 완료.') except FileExistsError: print('해당 폴더가 이미 존재합니다.\n폴더를 확인해주세요.') 저장할 폴더가 생

skimage - ssim 임포트 에러 [내부링크]

CV2의 피처 매칭을 이용해 그래프 유사도를 측정하는 코드 중 모듈 임포트 에러가 발생했습니다. ImportError: cannot import name 'compare_ssim' from 'skimage.measure' (C:\ProgramData\Anaconda3\lib\site-packages\skimage\measure\__init__.py) skimage의 해당 모듈 호출 방식이 달라진 것이 원인이기 때문에 from skimage.metrics import structural_similarity as ssim ...로 코드를 변경하면 정상적으로 임포트할 수 있습니다.

plt.savefig 저장 에러 [내부링크]

matplotlib을 통해 결과를 표시한 plt graph입니다. 예측값 그래프와 실제값 그래프의 유사도를 비교하기 위해 각각 이미지 파일로 저장하려 plt.savefig()를 사용하였는데 아래 사진과 같이 파일은 존재하지만 흰 화면으로 이미지가 제대로 저장되지 않는 문제가 발생했습니다. 해결방법은 plt.show()로 그래프를 표시하기 전에 plt.savefig()로 저장을 먼저 수행하는 것입니다. plt.show()로 표시된 이미지를 표시하면 이미지가 닫히고 메모리에서 해제되기 때문에 show()를 호출하기 전에 savefig나 savetxt를 호출해서 사용해야 위와 같은 문제를 방지할 수 있습니다.

텐서플로우 GPU 사용 환경 구축 [내부링크]

텐서플로우의 기본 설치 설정에서는 CPU를 이용하여 학습하도록 설치됩니다. 하지만 학습양이 많아지면 소요시간도 그에 따라 길어지기 때문에 더욱 빠른 작업을 위해서는 GPU 가속 기능을 사용하는 것이 속도 향상에 도움이 됩니다. 또한 그래픽카드가 여러개 탑재되어 있을 경우 각각의 그래픽 카드에 작업을 따로 할당해 병렬 처리를 할수도 있기 때문에 본격적으로 머신러닝, 딥러닝 학습을 한다면 GPU를 사용해서 학습하는 것을 추천드립니다. 1. 사양 확인 및 그래픽 드라이버 설치 환경 구축의 시작은 본인 컴퓨터의 사양을 확인하는 것부터 시작합니다. 실행명령창에 'devmgmt.msc'를 입력하고 장치관리자 > 디스플레이 어댑터 탭에서 그래픽 카드 사양을 확인합니다. 장치관리자 메뉴 표시 그래픽 카드 확인 그래픽카드를 확인하니 NVIDIA GeForce RTX 3070 모델이 탑재되어 있습니다. 다음 순서로는 https://www.nvidia.com/download/index.aspx?lang

LSTM 이용 전력 사용량 예측 초본 [내부링크]

데이터가 준비되었으니 본격적으로 전력 사용량을 예측하는 딥러닝 코드에 대해 리뷰해보도록 하겠습니다. 계속해서 성능을 개선해 나가고 있는 중이긴 하지만 출력되는 결과의 변화가 실험을 거듭하여 어느 정도 유사한 값으로 측정되고 미미하게 발전해 나가는 터라 완성 코드로 분류했습니다. 이후에는 조금씩 구조를 추가하거나 파라미터를 조정해서 성능을 개선시킨후 개선 버전으로 포스팅하도록 하겠습니다. 모듈 임포트 모듈을 임포트하고, GPU 사용 가능 여부를 체크한 다음 그래프 확인과 인공지능 학습을 위한 3년치, 4년치 합본 데이터를 각각 저장합니다. 데이터 설정 합본 데이터를 저장할때 인덱스 컬럼이 두번 들어가는 문제가 발생해서 drop 기능을 통해 중복된 순서를 삭제했고, 1년 단위의 데이터가 합쳐져 전체 인덱스범위가 아닌 1년 단위 인덱스가 3번 반복되는 문제는 reset_index를 통해 해결했습니다. # 3년치 데이터 합본 저장 df_3Y = pd.DataFrame() for y in r

전력 예측 LSTM 모델 파라미터 튜닝 [내부링크]

LSTM을 이용해 설계한 네트워크 모델은 활성화 함수나 epoch 횟수, batch size 뿐만 아니라 학습 및 예측 주기, 정규화 방식 등의 변경을 통해 예측 정도와 성능을 향상시킬 수 있습니다. 전체 틀이 짜여진 코드에서 파라미터를 변경해가며 개선한 모델들의 설계 기록과 결과를 차례대로 설명해 드리겠습니다. 1. Feature값 'Watt' 포함 여부 1,2차 모델은 다른 요소들은 최소화하고 오로지 데이터셋의 분할에서 Feature에 'Watt'의 여부에 따라 주기별로 어떤 결과를 보여주는지 시험했습니다. 1차는 Feature값에 'Watt'가 포함되어 있지 않고 Label에만 Y값으로 포함되어 있습니다. 학습 결과를 보면 1일 단위에서는 거의 학습이 이뤄지지 않았고, 7일은 변화폭이 조금 생겼지만 일치 정도는 다소 떨어지는 것을 볼 수 있습니다. 30일 단위에서는 학습과 예측 주기가 너무 길어서 큰 주기로만 증감이 이뤄지는 문제가 있었습니다. 1차 1일 단위 1차 7일 단위

LSTM 이용 전력 사용량 예측 - 개선 [내부링크]

기존 모델에서 주기 수정, 성능 평가 수치 표시, 데이터와 월간 그래프 저장 등의 내용을 정정 및 추가 했습니다. 1. Test Size 및 Window Size 수정 이전 버전의 Test Size는 365로 일수를 기준으로 365인줄 알았으나 1시간 단위 데이터를 1일 단위로 변경한 과정이 없는데 365일의 결과가 나오는 것이 말이 안됐기에 점검하던 중 문제를 발견했습니다. Test Set 및 결과는 24*365 = 8560개의 데이터로 구성되어 있으며 Test Size = 8560, Window Size = 24가 되어야 1일 주기로 맞춰서 학습이 가능합니다. TEST_SIZE = 8760 WINDOW_SIZE = 24 train = Data_4Y_scaled[:-TEST_SIZE] test= Data_4Y_scaled[-TEST_SIZE:] 2. 그래프 결과 표시, 저장 Result 폴더를 생성한 후 하위 폴더로 Graph, Data를 만들어 그래프 이미지와 csv 데이터를 각

전력 예측 결과 CSV 임포트, Limit Rows 해제 [내부링크]

전력 예측 결과로 저장된 1년 단위의 csv 파일입니다. 이번에는 MySQL에 테이블을 생성하고 해당 csv 파일을 임포트 해보겠습니다. 1. CSV Import result 테이블을 생성한 후 Data Import Wizard를 실행합니다. 각각의 컬럼을 확인합니다. index, datetime, pred, actual 데이터들이 정상적으로 확인되었습니다. 임포트가 완료되었습니다. 8760개의 레코드가 임포트 되었다는 메세지를 확인할 수 있습니다. 테이블 확인 결과입니다. 2. Limit Rows 해제 999개의 레코드가 확인 분명히 원본 csv 데이터중 8560개의 전체 레코드가 임포트 되었다고 완료 메세지가 출력되었는데 테이블을 다시 확인해보니 1000개의 레코드 밖에 존재하지 않았습니다. 'MySQL record 1000' 키워드로 검색해보니 rows 수에 기본적으로 1000개 제한이 있기 때문에 해당 제한을 해제해줘야 1000개 이상의 데이터를 임포트할 수 있다고 합니다.

Matplotlib 축 공유 그래프 [내부링크]

Matplotlib을 이용하면 여러 가지 그래프를 표현할 수 있는데 만약 두 그래프의 x축 설정 범위가 다른데 그래프값을 비교하고 싶다거나, x축은 같지만 y축의 범위가 다를 경우에 하나의 축을 공유하면서 서로 다른 범위로 각각 표현하는 방법을 알아보겠습니다. import pandas as pd import matplotlib.pyplot as plt import random 우선 필요한 모듈을 임포트해줍니다. random 모듈은 예시를 위해 임포트한 것이니, 반드시 필요한 것은 아닙니다. 1. X축에 서로 다른 범위 표시 = Y축 공유 x1=[1,2,3,4,5,6,7,8,9,10] x2=[5,10,15,20,25,30,35,40,45,50] y_list=[] for n in range(20): number=random.randint(1, 41) y_list.append(number) print(y_list) 우선 서로 다른 간격으로 구성된 x1과 x2의 리스트를 만들어 준 뒤 y_

안드레이 카르파티의 인공신경망에 대한 의견 [내부링크]

사진 출처 : MIT 인터뷰지 https://www.technologyreview.com/innovator/andrej-karpathy/ 안드레이는 Tesla의 AI 수석 이사를 맡고 있으며 자동주행 컴퓨터 비전팀을 이끌고 있습니다. 세계적인 영향력을 가진 기업에서 프로젝트를 이끌어가는 대단한 사람이기도 하지만 트위터나 홈페이지, 인터뷰 등을 통해 지식과 의견을 활발히 나누는 사람 중의 한명이기도한데, 기술 블로그 글 중에 공감도 많이 되었고, 인공지능을 공부하는 사람들은 읽어보면 좋을 것 같아 글 하나를 옮겨 왔습니다. <카르파티의 개인 홈페이지> https://karpathy.ai/ Andrej Karpathy 2017 I am the Sr. Director of AI at Tesla, where I lead the computer vision team of Tesla Autopilot . This includes in-house data labeling, neural netwo

MySQL과 파이썬 연동 [내부링크]

이번 글에서는 파이썬과 판다스를 통해 csv 파일을 읽고 MySQL DB에 Import, 그리고 다시 Export해서 사용하도록 연동시키는 코드를 살펴보겠습니다. 포스팅 기준 파이썬 3.9.7, 주피터 노트북에서 실행되었음을 미리 밝힙니다. MySQL Connection 선택 화면 먼저 MySQL Server와 Workbench가 필요합니다. 사진을 보시면 Electric_DB라는 커넥션이 생성되어 있는데 새로운 연결을 만드는 방법은 MySQL Connections에서 + 로고를 클릭하면··· Setup New Conncetion ···이렇게 새로운 커넥션의 정보를 설정하는 창이 뜹니다. 커넥션의 이름은 필수적으로 지정해줘야 하고, Hostname과 Port는 default로 127.0.0.1과 3306이 지정되어 있습니다. 예시의 Electric_DB의 경우 Hostname은 저만의 주소로 변경을 했으나 Port는 외부로 개방하고 방화벽 설정을 해야하기 때문에 3306 포트를 그대

인공지능 네트워크 단계 시각화 [내부링크]

Visualization free image Keras의 Sequential() 모델을 사용하면 인공지능 모델을 생성할 수 있습니다. 모델이 복잡해지면 다른 사람에게 설명하기도 어렵고, 시각적으로 한눈에 확인이 어렵기 때문에 시각화해서 이미지로 저장해두면 여러 가지로 장점이 많습니다. # 주피터 노트북에서 바로 설치를 진행하는 코드 !pip install pydot !pip install pydotplus !pip install graphviz 주피터 노트북에서 pip를 이용해 필요한 모듈을 바로 설치했는데 시각화 기능을 실행해봤더니 설치를 했는데도 오류가 났습니다. 'You must install pydot and install graphviz' 라는 메세지가 출력됐습니다. 분명히 명령어를 통해 설치했는데 당황스럽네요.. 해결을 위해서 https://stackoverflow.com/questions/40632486/dot-exe-not-found-in-path-pydot-on-py

ImportError: cannot import name 'animation' [내부링크]

환경 재구축을 한 뒤 발생한 matplotlib 임포트 오류입니다. https://stackoverflow.com/questions/64209744/importerror-cannot-import-name-animation-matplotlib-python-3-8-5 ImportError: cannot import name 'animation' (matplotlib + python 3.8.5) Why doesnt matplotlib imported with python 3.8.5 work? Im running anaconda version 3 which is 64 bit. The error im getting is: Matplotlib is installed with version 3.3.2: Using cached matplotlib-3... stackoverflow.com 스택오버플로우를 참고해서 아래 코드로 matplotlib을 강제 재설치해 해결했습니다. 환경 재구축을 하는데 파

주피터 노트북 'xsrf' argument missing from POST [내부링크]

Rename을 통해 저장하는 중 발생한 에러 메세지 주피터 노트북 환경에서 코드를 작성하고 새로 저장하려는데 'xsrf' argument missing from POST 에러가 발생했습니다. Rename도 안될뿐더러 일반 저장도 안되는 상황이었습니다. 처음에는 다른 블로그를 보고 1. Anaconda Prompt 접속 2. config 파일 생성 jupyter notebook --generate-config 3. 출력된 경로의 위치로 이동 4. config.py 파일을 열어서 ctrl+F 키로 NotebookApp.token = '<generated>' 문구를 NotebookApp.token ='' 로 수정 5. 수정 저장. ···의 절차대로 해보았으나 해결되지 않았습니다. config.py 파일 내부 수정할 부분 https://stackoverflow.com/questions/55014094/jupyter-notebook-not-saving-xsrf-argument-missing-

h5py 모듈 임포트 에러 [내부링크]

pydot 모듈 설치 이후에 이유는 알 수 없지만 h5py 모듈을 불러올 수 없다며 에러가 발생했습니다. 이전에는 동일한 모델 파일을 h5파일로 잘 저장하고 불러왔었는데 ImportError: `save_model()` using h5 format requires h5py. Could not import h5py. 에러메세지가 출력되고 텐서플로우 학습이 전혀 이뤄지지 않았습니다. pip를 통한 재설치, conda를 통한 재설치 모두 진행해 보았지만 해결은 되지 않았습니다. 하지만 아나콘다 창에서 설치를 진행하던 중 아래 사진과 같은 에러 메세지가 출력됐습니다. 아나콘다 창의 h5py 모듈 설치 화면 붉은색으로 표시된 내용을 살펴보면 제 컴퓨터 에 설치된 텐서플로우 2.6.0 버전은 h5py 버전 3.1.0과 호환된다고 돼있는데 현재 3.6.0이 설치돼있다고 합니다. 넘파이 버전 오류도 보이지만 넘파이 모듈이 텐서플로우와 직접 연동되는 부분은 거의 없으니 우선 h5py 모듈만 pip

깃허브 프로필 사진 변경 에러 [내부링크]

깃허브 프로필 사진을 정상적으로 업로드 했는데 일부 저장소의 이미지만 변경되었거나 메인 프로필 화면에서 이전 프로필 사진이 표시된다면, 확장자를 점검해보시길 바랍니다. 이전에 설정했던 이미지 파일의 확장자와 새로 업로드한 프로필 사진의 확장자가 다를 경우 해당 문제가 발생할 수 있습니다. 동일한 확장자로 통일해서 다시 시도해보시는걸 추천합니다.

Black 을 이용한 코드 품질 관리 [내부링크]

코드는 각자의 개인 컴퓨터에 저장되면서 복사 붙여넣기식 개발이 계속되면 취약점은 계속 코드에 남게 됩니다. 따라서 - 너무 많은 전역 변수의 사용 지양 - 코드의 길이 조절 - Import 통일과 PYTHONPATH 환경변수 등의 이용을 통해 시작지점을 구분 등의 점검을 통해 코드의 품질 관리가 필수적입니다. 코드를 점검하고 관리하는 요소와 툴은 여러가지가 있지만 이번 글에서는 Black을 알아보도록 하겠습니다. https://pypi.org/project/black/ black The uncompromising code formatter. pypi.org Black은 파이썬 코드 포멧터로 통일된 코드 스타일과 규칙으로 일관된 코드폼과 품질을 유지할 수 있도록 도와줍니다. 'pip install black' 으로 손쉽게 설치할 수 있고 py 파일의 경로로 진입해 black 파일.py 명령어를 통해 실행이 가능합니다. black 전 black을 거치기 전의 코드입니다. 불필요한 공백이

라즈베리파이 - VNC 화면 미표시 에러 [내부링크]

라즈베리파이의 한글 및 기초 환경 설정을 마치고 VNC Viewer를 통해 데스크탑에서 보려는데 검은 화면과 "Cannot currently show the desktop"이란 메세지가 출력되었습니다. 라즈베리파이 본체에 모니터를 연결했을 때는 두 화면이 똑같은 동작을 하는 것을 확인했는데 재부팅만으로 에러가 발생하니 당황했습니다. https://www.freva.com/how-to-fix-cannot-currently-show-the-desktop-on-raspberry-pi/ How to fix 'Cannot currently show the desktop' on Raspberry Pi With this short tutorial you'll fix the black screen error message 'Cannot currently show the desktop' while using VNC on your Raspberry Pi. www.freva.com 검색을 통해 확인해보

웹 크롤링을 이용한 대학 프로그램 확인 [내부링크]

제가 다니는 학교에서는 전공 과목 외에도 '비교과'라고 하는 별도의 프로그램의 이수 조건을 충족해야 하는 졸업 요건이 있습니다. 다른 학교와 통합되면서 이전의 시스템 포인트는 유지하되, 새로운 포인트는 신규 사이트에서 프로그램을 신청하고 이수해야 하는 불편함이 생겼는데 이를 해소하고자 코드를 짜봤습니다. 개설되는 프로그램들은 선착순으로 모집되므로 수시로 확인을 해줘야 하는데 북마크나 ID 저장을 하더라도 클릭을 해야하는 번거로움이 있고 시간이 소요되며, 코드로 자동화를 하면 부팅시에 자동으로 실행되게 설정도 할 수 있으므로 여러 장점이 있습니다. 파일 구성 전체 파일은 셀레니움 구동을 위한 크롬 드라이버와 로그인 계정 정보를 담은 txt 파일, 파이썬 모듈 사용을 위한 초기의 모듈 설치 exe 파일 그리고 핵심 동작을 하는 두개의 파이썬 코드로 구성되어 있습니다. exe 파일 파이썬이 설치되어 있다는 가정하에 전체 과정이 실행되는데 동작이 완료되려면 모듈 import가 되어야 합니다

파이썬 환경변수 추가 [내부링크]

1. 문제 발생 환경변수 설정 전 cmd의 python 실행 결과 Microsoft Store Python 창이 켜진다. 파이썬의 모듈 설치 bat 파일을 실행했는데 제대로 설치되지 않아 cmd에서 python 명령어를 실행해봤는데 사진과 같이 에러가 납니다. 'Python' 메세지만 출력되고 Microsoft Store가 켜지며 python을 설치를 권유하고 있습니다. 파이썬의 환경 변수 Path 등록이 제대로 안 된것 같으니 점검후 등록해보겠습니다. 2. Python 폴더 경로 탐색 탐색기를 통해 Python 폴더 검색 Python 폴더 탐색기를 통해 Python의 폴더 경로를 검색했습니다. 경로 탐색에 익숙하신 분들은 AppData\Local\Programs\Python 으로 진입하시면 설치버전의 Python 폴더를 찾을 수 있습니다. 3. 시스템 환경 변수 편집 검색창에 '환경 변수' or '시스템' 검색 시스템 환경 변수 편집 창을 띄운 후 -> 환경 변수 클릭 -> 시스템

CPU 온도 확인 쉘 스크립트 코드 [내부링크]

라즈베리 파이를 사용하면서 중요한 확인 사항 중 하나인 CPU 발열을 확인하기 위한 쉘 스크립트 코드를 작성해봤습니다! 메인 패널 설정에서 추가 옵션을 통해 별도의 프로그래밍 없이도 사용할 수 있지만, 특정 조건의 코드를 작성하거나 디스플레이 없이 Putty등을 통해 명령창으로 확인하는데는 유용하게 사용할 수 있을겁니다. 쉘(Shell)은 운영체제에서 사용자가 입력하는 명령을 읽고 해석하여 대신 실행해주는 프로그램을 뜻합니다. 쉘은 Unix나 리눅스에서만 사용되는 것이 아니라 Windows 운영체제나 다른 운영체제에도 필수적으로 존재합니다. Unix나 Linux의 경우 bash, sh, ksh, csh 등이 있으며, 윈도우는 cmd.exe 등의 쉘이 있습니다. 쉘 스크립트(Shell Script)는, 쉘에서 동작하는 명령어들을 한꺼번에 텍스트 파일로 모아서, 여러번 사용가능하게 만들어 놓은 것입니다. 이 때, 스크립트란 일반적으로 인터프리트(interpret) 방식으로 동작하는 컴파

VNC Viewer 해상도 조절 [내부링크]

라즈베리 파이의 VNC 옵션을 이용해서 데스크탑에서 화면을 켰는데 작은 화면으로 인해 너무 불편하니 해상도를 변경해보겠습니다. 그리고 제 컴퓨터는 이미 VNC 연결이 되어 있지만 초기 VNC 설정을 하는 방법도 같이 알아보도록 하겠습니다! <1. VNC 활성화 및 연결> 명령어를 통해 설정창으로 들어갑니다. 명령창을 열고(Ctrl+Alt+T) $ sudo raspi-config 명령을 통해 configuration 설정창으로 진입합니다. ※ 글 순서를 바꾸다보니 사진 크기가 조금 엉킨 점 양해부탁드립니다. 3. Interface Options 선택 Configuration 창이 열리면 3. Interface Options 메뉴로 진입합니다. I3. VNC 선택 VNC 활성화 I3.VNC를 클릭하면 활성화 하겠냐는 창이 뜹니다. <예>를 선택하면 VNC가 활성화되게 됩니다. 방법2. 작업 패널의 메뉴 탭을 이용해 진입 VNC 체크란에서 활성화 다른 방법은 작업 패널창의 [기본 설정]

라즈베리 파이 WiFi country 설정 에러 [내부링크]

Wifi country not set 라즈베리 파이의 VNC 화면입니다. 해당 이미지는 다른 기기의 사진인데, 제 라즈베리 파이의 경우는 이미 문제 해결이 되어서 불가피하게 다른 사진을 가져왔습니다. 좌측 상단을 보시면 wifi를 연결하기 위한 아이콘을 클릭하면 "Click here to set WiFi country"라는 메세지가 출력되고 있습니다. 정상 수순이라면 클릭 후 원하는 국가로 설정하고 wifi 목록이 표시되면서 무선랜 접속이 되어야만 하지만 부분들은 국가를 선택해도 계속 WiFi country 메세지가 표시되며 연결을 할 수 없는 상황을 겪으셨을겁니다. 이전에 알려진 해결방법들은 크게 2가지였습니다. 1. 언어 및 국가 설정에서 English와 GB(=UK)을 선택한다. 라즈베리 파이의 고질적인 버그와 타파법입니다. Menu -> Preferences -> Raspberry Pi Configuration -> Lacalisation -> WiFi Country 를 누르

웹을 통한 CPU 사용량과 온도 확인 [내부링크]

이번 포스팅에선 코드나 라즈베리 화면이 아닌 웹 주소로 접속해서 각 CPU의 개별 메모리 사용량을 포함해 메모리 사용률과 온도를 확인할 수 있는 프로그램을 소개해드리겠습니다. 과정은 간단합니다. 1. 라즈베리 파이 본체에 프로그램 설치 2. 웹에서 해당 주소 접속 1. 라즈베리 파이 clone, install git clone을 통해 https://github.com/davidsblog/rCPU 의 코드를 복사합니다. 그 다음 rCPU/rCPU 폴더에 들어가서 $ cd rCPU/rCPU/ $ sudo make install make install 명령어로 설치해주면 1번 과정은 끝입니다. 설치 2. 웹 접속 $ ifconfig ifconfig 명령어를 이용하면 라즈베리 파이가 이용하고 있는 wifi 주소를 알 수 있는데 웹 주소는 IP주소:8111 의 형식으로 입력하면 접속할 수 있습니다. 웹 화면 해당 주소로 접속하게 되면 위 사진처럼 Totacl CPU, 개별 CPU, 온도로 구

라즈베리 파이 냉각 실험 [내부링크]

3007 DC 5V 10,000 RPM 팬모터 기다리던 10,000 RPM 팬모터가 도착했습니다. 본격적인 하드웨어 공간 배치에 앞서 냉각의 실효성과 방안에 대해 실험을 해보려 했는데 드디어 진행할 수 있게되었습니다. <포스팅 순서> 1. 모델과 메모리 확인, GPU 추가 할당 2. 냉각 실험 2.1. 냉각 없이 동작 측정 2.2. 후면 아이스타워 냉각 2.3. 후면 아이스타워+측면 팬모터 냉각 1. 모델 메모리 확인, GPU 추가 할당 실험을 위해 유튜브를 켰는데 랙이 걸리고 너무 느려서 CPU 스펙을 확인해보고 GPU를 추가로 할당해주기로 했습니다. $ cat /proc/cpuinfo 명령어를 입력하면 각 CPU와 라즈베리 파이의 모델 정보를 알 수 있습니다. (모델 정보표와 원본 링크는 맨 하단에 있습니다.) 출력 하단부에 우리가 필요로 하는 정보가 모여 있는데 위 사진을 보시면 Revision과 Model 이 해당 정보입니다. Revision : c03112 Model : R

라즈베리파이 SD카드 복사 [내부링크]

16GB 에서 32GB로 이사 라즈베리 파이의 저장과 동작은 SD 메모리 카드를 통해서 이뤄집니다. 하지만 SD카드 구매 이후 라즈비안 OS 설치를 해줘야 사용이 가능하고, 만약 설치해놓은 프로그램과 설정들이 많다면 전부 설치하기엔 시간과 노력이 너무 많이 소요되는 문제가 있습니다. 같은 동작을 위해, 혹은 다른 사람에게 전해주기 위한 SD카드 복제 백업의 용도 프로그램 개발 이후 제품 판매를 위한 SD카드 프로그램 적재 ~와 같은 상황들에서 라즈비안의 SD카드 복사 기능을 사용하면 따로 SD카드 포멧, OS설치, 프로그램 설치, 환경 설정의 과정을 거칠 필요 없이 완전히 동일하게 복제가 가능합니다. 보조프로그램 - SD 카드 복사기 시작 메뉴에서 보조 프로그램 - SD카드 복사기를 클릭하면 아래와 같이 복사 주체와 복사될 저장소를 선택하는 창이 뜹니다. '장치로 복사'가 새로 복제될 SD카드로 잘 구분해서 시작 버튼을 누르시면 됩니다. 예시 사진 사진에서는 예시를 위해 다른 장치를

라즈베리 PC 케이스 설계 1 [내부링크]

작업 중인 전체 파츠들 알리와 디바이스 마트 등에 주문한 부품도 배송 중이고 도착에 맞춰 미리 케이스를 작업중입니다. 프로그램은 TinkerCAD란 프로그램을 사용하였고, 라즈베리 파이 본체의 모델링은 검색해서 파일 그대로 사용했습니다. https://www.tinkercad.com/things/8KivNtf1FKl-raspberry-pi-4-b-motherboard 사물 갤러리 | Tinkercad 3D design Raspberry Pi 4 B motherboard created by ptbwillis with Tinkercad www.tinkercad.com 항공 시점 사진 라즈베리파이 기판과 검은색의 LCD 디스플레이 그리고 박스 종이 색깔로 표현된 케이스 외관들입니다. 측면 팬을 결합하고 냉각효율을 최대화하기 위한 고민을 했으며, 그 외에는 스위치와 USB 포트, 전원 C타입 케이블 구멍 정도만 내주면 됩니다. 냉각 효율부를 올리기위한 유속 증가부 팬은 케이스 내부에 전체적

라즈베리 PC 케이스 설계 2 [내부링크]

측면 구멍 가공 및 전체 구조를 설계한 기록입니다. USB 포트 및 로커 스위치 구멍에 맞춰 공백 블록으로 자리를 잡습니다. 좌측판을 이동시켜 공백 블럭과 겹친뒤 그룹을 지정하면 우선 USB 구멍부터 뚫어줍니다;; 확인 결과 라즈베리 파이의 USB 포트와 딱 맞습니다. 다음 작업으로 넘어가기 전 전체 부품들의 결합 전 사진입니다. 1. 접착제와 함께 더 강한 결합을 해주기 위한 요철 구조 처리 2. 후면 C타입 충전 포트와 나사 구멍 작업 3. 측면팬 냉각판 결합 작업 4. 상판 통풍구 가공 등을 거치면 완성입니다.

라즈베리 PC 케이스 설계 완성 (1차) [내부링크]

실제 프린팅 센터에 가면 수정할 부분들이 발생할 것 같지만 1차적으로는 완성했습니다. 결합부를 요철 구조로 만들어서 좀더 결합력이 좋도록 했고, 측면팬의 냉각판을 상부판 하부판의 홈 결합을 통해 조립되도록 위치 조정, 디스플레이 상단부 Micro HDMI 연결잭의 높이를 고려한 전체 높이 수정, 상부판 통풍구 결합, 라즈베리 파이 기판의 안정성을 위한 후면판 나사 구멍 가공, 이름 양각 삽입, C타입 잭 (암) 삽입을 위한 구멍 확장 ~의 추가 작업 후 완료된 결과물입니다. 각 파츠별로 분해된 완성본의 사진입니다. 분해된 완성본 정면 분해된 완성본 좌측면 분해된 완성본 우측면 결합된 완성본의 사진입니다. (이름 양각 누락) 결합된 완성본 정면 결합된 완성본 좌측면 결합된 완성본 후면 결합된 완성본 우측면 라즈베리파이와 다른 부품 없이 프린팅될 부품들만 결합, 나열했습니다. 케이스만 결합했을 때 정면+좌측면도 케이스만 결합했을 때 후방+우측면도 프린팅을 위한 배치 처음 계획할때도 전체

손에 잡히는 라즈베리 파이 [내부링크]

저자 : 매트 리처드슨, 숀 월리스 출판사 : 인사이트 출간 : 2015년 09월 15일 정가 : 18,000원 후기 : 라즈베리 파이 프로젝트를 진행하다가 좀 더 체계적이고, 검색으로 다 나오지 않는 내용들을 공부하기 위해 골랐던 책인데 현재 시점에서 평가를 하자면 비추천입니다. 책에서 다루고 있는 내용들의 목차나 순서 구성, 삽입된 이미지나 표 등은 정말 좋지만 라즈베리 파이 4B가 나온 시점에서 2B, 2A를 다루고 있는 책이라 아무래도 안 보고 넘기는 부분이나 불필요한 부분이 많은 것 같습니다. 특정 이유로 해당 버전의 라즈베리 파이를 다루셔야 하는 분이시라면 유용하겠지만 그외는 다른 책을 찾아보시는 걸 추천합니다.

휴대용 PC 전원 및 냉각 시스템 동작 [내부링크]

케이스 내부에 배선될 전원과 측면팬 냉각 시스템의 연결을 완료했고, 시험 동작도 해봤습니다. 알리익스프레스 배송이 생각보다 일찍 도착했네요. 예상 도착일이 다음주인데 일주일 정도 일찍 수령한 것 같습니다. 원래 라즈베리 파이에는 별도의 전원 시스템이 없기 때문에 키고 끌때 잭을 뽑아야 하는 불편함이 있고, 전원잭으로 부터 측면팬으로 전원을 공급해주기 위해 후면부로 충전잭을 옮기고, 전원 스위치와 쿨링팬의 조작 스위치를 추가로 달아줬습니다. 스위치 부착으로 편리한 전원 관리와 고효율의 냉각 효과를 얻을 수 있을거라 기대중인데 얼른 케이스를 프린트해서 완성품으로 조립했으면 좋겠습니다.

라즈베리 PC 케이스 설계 완성 (2차) [내부링크]

3D 프린팅을 주문하러 갔다가 부품 그룹화나 디테일 부분에서 놓친 부분이 많아서 다시 작은 부분들부터 전체 높이까지 전면 재수정해서 2차본으로 완성했습니다. 현재는 프린팅 주문이 의뢰된 상황이고 완성을 기다리고 있으니 완성품을 가조립해서 확인해보기 전에 2차 수정본을 살펴보겠습니다. 사진의 파란색 박스는 디스플레이와 라즈베리 파이를 연결하는 HDMI-Micro HDMI 잭입니다. 연결했을 때 높이를 측정하니 이전보다 3.5cm가 이전보다 상승했기 때문에 제품의 측면판 높이 또한 9.9cm로 상승했습니다. (생각해보니 1mm 더 높여서 그냥 10cm 만들걸 그랬네요;;) 프린트될 부품들의 평면도 항공샷입니다. 각 부품이 결합되는 요철부가 이전에는 작은 블럭들을 붙이는 방식이었다면 수정된 방식은 공백 블럭들로 파내는 식으로 바꿨습니다. 자세한 원리는 잘 모르지만 프린트 연산에서 그룹화를 하더라도 내구성 면에서 떨어진다고 하더군요. 불가피하게 접합이 필요한 부분은 작은 블럭들을 만들어서

라즈비안 OS 설치 [내부링크]

라즈베리 파이는 Debian Linux 기반 라즈비안(Rasbian) 운영체제(OS)를 지원합니다. 우분투나 리눅스 등 다른 OS도 이용 가능하지만 오늘은 라즈비안 설치 과정에 대해 알아보겠습니다. 라즈베리 파이를 초급자에 맞게 세트로 묶어서 파는 제품을 사셨다면 이미 SD카드에 OS가 설치되어 있을 수도 있지만, 별도로 구매를 했거나 새로 OS를 설치해야 한다면 아래 과정을 따라서 실행하시면 됩니다. https://www.raspberrypi.com/ Raspberry Pi From industries large and small, to the kitchen table tinkerer, to the classroom coder, we make computing accessible and affordable for everybody. www.raspberrypi.com 라즈베리 파이 공식 홈페이지입니다. 상단 메뉴에서 Software를 클릭하고 들어갑니다. 라즈베리 파이 공식 홈페이

라즈베리 PC 케이스 1차 출력 확인 [내부링크]

전체 부품들의 사진 의뢰했던 3D 프린트 출력물을 전달 받아서 1차로 확인해봤습니다. 생각보다 잘 출력된 부분들도 있는 반면에 예상치 못했던 문제들이 확인되어서 개선 사항을 반영하여 2차 출력 후에 다시 조립을 해봐야 할 듯 합니다. 결과물 확인 하부판위에 라즈베리 파이를 얹어봤습니다. 하부판 위에 라즈베리 파이 본체를 얹어봤습니다. LDC 디스플레이와 라즈베리 본체와의 결합으로 인한 높이차가 판의 높이와 딱 맞았고, 측면 넓이도 정확합니다. 정면 사진, 화면 크기는 정확히 맞춘듯 합니다. 정면 사진입니다. 보다 정확한 일치 여부나 유격 차이는 완전히 조립을 해봐야 알 수 있겠지만 우선 눈대중으로는 잘 맞춘 듯 합니다. 환풍을 위한 홈이 잘 출력된 상부판 내부에 세워질 냉각판의 세밀한 작은 판들도 잘 출력되었다. 상부판과 내부에 삽입될 냉각판들도 구멍이나 홈이 세밀하게 설계되었는데 문제 없이 잘 출력되었습니다. 문제점 어떻게 보면 충분히 해결할 수 있는 문제이기도 하지만 프린트한 직

라즈베리 파이 SD카드 복사 관련 에러 [내부링크]

이전에 라즈베리 파이 SD카드 복사 기능에 관해 포스팅을 한 적이 있었는데 8GB RAM 모델에서 카피한 후 4GB RAM 모델에 sd카드를 꽂고 부팅을 하니 초록색 led가 계속 점등되면서 화면이 안 나오는 에러가 발생했습니다. sd카드를 리더기에 꽂아서 별도로 라즈비안 OS를 다시 설치하니 문제 없이 초기 설정 화면으로 넘어갔는데, 정확한 원인은 더 찾아봐야겠지만 의심되는 원인으로는 -8GB 버전에서 설정한 사항들이 4GB 버전에서는 호환되지 않거나 -sd 카드 복사 기능은 초기 설정이 끝난 상태에서 진행해야 하며, 두번 연속 실행할 시 에러가 발생한다거나 -sd카드의 포맷에 따라 에러가 발생한다. 등등이 있습니다. 해당 에러는 해답을 찾게 되면 자세히 포스팅 하도록 하겠습니다.

리눅스 Shutdown 명령어 [내부링크]

Shutdown 명령어를 사용하면 갑작스러운 전원 공급 차단으로 인한 기기 손상을 막고, 안전하게 전체 전원을 끌 수 있습니다. 또한 일정 작업을 수행하고 전원이 꺼지게 하거나 특정 조건에서 전원이 꺼지는 자동화 코드를 작성할 수도 있습니다. 이번 포스팅에서는 shutdown 명령어에 관해 알아보겠습니다. ※해당 포스팅은 라즈베리 파이4B 라즈비언 OS 환경에서 실행되었습니다. shutdown -h : 시스템 종료 -t : 시스템 종료 (시간 지정 필수, 정상 작동 X) -P : 시스템 강제 종료 (대문자 P) -r : 시스템 재시작 -c : 예약된 명령 취소 -k : 예약 메세지는 출력되나 shutdown 동작은 실행되지 않음. shutdown 명령은 별도의 시간 지정이 없으면 명령어 입력 기준 1분 후 실행됨을 기본값으로 가지며, t명령만 시간 지정이 필수적으로 필요합니다. shutdown -c 명령으로 현재 예약되어 있는 shutdown 명령을 취소할 수 있으며, shutdow

RPi 한글 폰트 및 입력기 [내부링크]

Localisation - Set Locale Localisation - Set Timezone Localisation - WiFi Country SD카드에 새로 OS를 설치하면서 초기 설정도 다시 하게 되었는데 이전과 다르게 한글 폰트 설정도 직접 해보려 합니다. 처음 시작시 Country와 Language, Timezone은 UK, en, London으로 했으며 이후에 Asia-Seoul과 Seoul로 국가와 시간대를 변경한 직후의 상황입니다. 국가와 시간대 변경 후 깨지는 한글 폰트들 메뉴 화면입니다. 갑자기 국가와 언어, 시간대를 변경했더니 폰트들이 전부 깨져서 보입니다. 한글로 변경은 됐지만 폰트를 표시하는데 문제가 발생한 것입니다. 설치 중 표시되는 한글들도 깨져서 출력된다. 터미널 창을 열어 $sudo apt-get install fonts-unfonts-core 명령어로 font 파일을 설치해줍니다. 설치가 완료되지 않아서 설치중 표시되는 한글들도 전부 깨진 상태로 표

RPi 블루투스 장치 자동 연결 [내부링크]

라즈베리 파이(이하 RPi)의 초기 설정에서는 장소가 바뀌면서 와이파이 연결이 바뀌거나, 새로운 vnc 주소를 확인해야 하거나 하는 등의 상황이 발생합니다. 매번 키보드와 마우스를 들고다니기도 번거롭기 때문에 같은 RPi 본체라면 전원이 켜지면 자동으로 블루투스 키보드와 연결되도록 설정해봤습니다. 1. 블루투스 모듈 설치 하단 메뉴바에서 블루투스 아이콘을 선택하고 새로 장치를 추가하는데 제대로 검색이 되질 않습니다. 블루투스 관련 모듈에 문제가 있는듯 하니 새로 설치를 해서 최신 버전으로 동기화, 설치가 안 되어 있다면 설치하도록 하겠습니다. $sudo apt-get install bluetooth blueman bluez $sudo apt-get -y install bluetooth blueman bluez apt-get 명령어를 통해 blueman과 bluez를 설치해줍니다. apt-get울 사용할 때 뒤에 -y를 붙이면 이후 실행될 yer/no? 명령에서 자동으로 yes를 선택

RPi 아두이노 IDE 설치 [내부링크]

개인적인 견해이지만 라즈베리파이(이하 RPi)보다는 아두이노로 IOT나 MCU를 접하신 분들이 더 많으실 거라 생각합니다. 저도 아두이노를 먼저 접하고 RPi를 익힌 경우기도 하구요. 이번 포스팅에서는 아두이노의 대표 프레임워크인 아두이노 IDE를 RPi에 설치해 보도록 하겠습니다. 아두이노 IDE는 라즈비안 OS의 자체 apt-get 명령을 통한 설치 방법1과 홈페이지의 Linux 설치 파일을 직접 다운로드 받아 설치하는 방법2가 있습니다. 하지만 22년 04월 04일 릴리즈된 Debian Raspbian 32bit OS를 기준으로 자체 설치 명령으로도 Ver.1.8.13의 최신 버전이 설치되기 때문에 방법2는 보류하고 방법1만 설명해드리도록 하겠습니다. Arduino IDE 설치 터미널창에 아두이노 IDE 설치 명령어 입력 $sudo apt-get -y install arduino #필요시 $sudo apt-get update $sudo apt-get upgrade 아두이노 ID

can't open device "/dev/ttyACM0": Device or resource busy [내부링크]

라즈베리 파이에 아두이노를 연결하고 시리얼 프린트된 값을 읽어와 처리하는 파이썬 코드를 실행하는데 제목과 같이 can't open device "/dev/ttyACM0": Device or resource busy 에러 메세지가 출력됐습니다. 흔히 사용하는 데스크탑 or 노트북의 경우 아두이노를 연결하면 COM? 포트에 연결된 것으로 확인 되는데 라즈베리에서는 "/dev/ttyACM?" 포트에 연결됩니다. 보통은 ACM0에 연결되는데 해당 포트에 연결된 장치의 작업이 바빠 읽어오지 못하는 상황인 것이죠. 아두이노를 다시 연결도 해보고, 0.01초마다 연산되는 센서 때문인가 싶어서 동작 주기도 1초로 변경해보고, 보드 매니저와 라이브러리 업데이트 최신화도 해보고, 구글링도 해봤지만, 해결을 하지 못하고 있었습니다. 그러던 중 Stackoverflow의 질문/답변 아래에 있는 한 댓글을 봤고 시리얼 모니터 창을 끄자 간단하게 문제는 해결됐습니다;; 시리얼 모니터로 출력이 되는 중이라 파

RPi MariaDB 설치 및 MySQL 연동 [내부링크]

MariaDB, MySQL를 이용하여 라즈베리파이에서 DB를 생성하고 다른 데스크탑에서 확인하는 과정까지 진행해보겠습니다. 내용이 길기도 하고, 데이터 통신면에서는 아직 정리중이라 차차 포스팅이 진행될 예정입니다. 1. DB 프로그램 설치 mariadb 설치 $sudo apt-get install mariadb-server 터미널 창에 sudo 권한으로 apt-get 설치 명령을 입력합니다. $sudo mysql_secure_installation mariadb 설치가 끝나면 mysql_secure_installation을 진행합니다. root 계정의 임시 비밀번호를 입력해라는 메세지가 출력되면 엔터를 치고 다음 과정으로 넘어갑니다. Switch to unix_socket authentication 권한 이전 메세지가 출력되면 y를 입력하고 다음으로 넘어갑니다. root 계정의 비밀번호를 변경하겠냐는 메세지가 출력되면 y를 눌러줍니다. 비밀번호를 입력해주고 다음 단계부터는 y와 En

윈도우 10 자동 로그인 체크박스 안보이는 문제 [내부링크]

윈도우 10 사용중 로컬 계정의 비밀번호를 설정했는데 매번 비밀번호를 치기 귀찮기도 하고, 원격접속으로 이용할때 재부팅을 하면 비밀번호 화면에 걸려서 사용이 안되기 때문에 자동로그인이 되도록 설정하려 했습니다. Window + R 키를 누르면 실행창이 열리는데 netplwiz 를 입력해 사용자 계정 설정창을 엽니다. 분명 인터넷 검색시에는 "사용자 이름과 암호를 입력해야 이 컴퓨터를 사용할 수 있음." 체크박스를 해제하면 자동 로그인이 된다는데 체크박스가 아예 안 보이는 문제가 있습니다. 윈도우 실행창에 regedit 을 입력하고 레지스트리 편집기를 열어줍니다. 좌측 폴더 탭에서 컴퓨터\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\PasswordLess\Device 의 경로로 차례대로 클릭하면서 진입하면 "DevicePasswordLessBuildVersion" 이름을 가진 문자열 값 파일이 있습니다. 더블 클릭해

면접을 위한 CS 전공지식 노트 [내부링크]

저자 : 주홍철 출판사 : 길벗 출간 : 2022년 04월 28일 정가 : 24,000원 후기 : 목차부터 크게 1장. 디자인 패턴과 프로그래밍 패러다임 2장. 네트워크 3장. 운영체제 4장. 데이터베이스 5장. 자료구조 6장. 포트폴리오와 면접 순으로 되어있습니다. 보통은 목차를 생략하고 후기만 포스팅하지만 이번에는 목차를 올려봤는데 이유는 책의 방향성 때문입니다. 찾아보기와 저자의 말 등의 페이지를 제외한 내용은 총 260여 페이지 그중 처음부터 2장 네트워크에 관한 내용까지 차지하는 페이지는 총 130 페이지 정도, 목차상으로는 1/3 이지만, 분량 상으로는 절반에 가까운 내용이 프론트엔드를 다루고 있습니다. 저는 백엔드와 인공지능을 공부했기 때문에 교양이나, 참고로 아는 정도가 아니라 실제로 면접에 도움이 된 것은 3장부터 정도라고 할 수 있습니다. '프론트엔드와 백엔드로 나눠서 책을 두권으로 냈다면 어땠을까..?'하는 생각도 들었는데 만약 목차와 내용을 제대로 안 살펴보고

데이터 과학자와 데이터 엔지니어를 위한 인터뷰 문답집 [내부링크]

저자 : HULU 데이터 과학팀/김태헌 옮김 출판사 : Jpub 출간 : 2020년 06월 30일 정가 : 34,000원 후기 : 먼저 한줄로 요약해보자면 <어렵다. 하지만 기초부터 심화까지 분류와 목차가 안정적이다.> 라고 말하겠습니다. 인공지능을 공부하셨다면 데이터 가공, DNN, CNN, RNN을 시작으로 한 클론 코딩, 인공지능 네트워크의 하이퍼 파라미터 튜닝을 위한 활성화 함수와 학습 방법, 각 모델별 특징 등을 바탕으로 실력을 쌓으셨을거라 예상합니다. 이 책에서도 각 장별 질문에 대한 세부 답변들을 정리해 내용이 서술되는데 단순히 정의를 묻는데 그치는 것이 아닙니다. 평가지표를 예로 든다면, 정확도의 한계성, 정밀도와 재현율의 균형, 모델 평가 과정의 검증 방법과 각 장단점은 어떻게 되는지 등 정의를 바탕으로 비교와 실제 사용시 부딫히는 한계점이나 사용 방안에 대해서도 다루기 때문에 사전의 구조보다는 '강의를 책으로 옮겨놓은 것 같다.'라는 느낌이 들었습니다. 데이터 과학

라즈베리 PC 케이스 2차 프린트 확인 [내부링크]

지난 1차 프린트에서 발견된 설계 오류와 치수 수정을 거쳐서 2차 프린트를 완료했습니다. PLA로 출력했던 1차와 달리 라즈베리 파이의 발열을 고려, 변형을 최소화하기 위해 ABS 블랙 재질로 변경했습니다. 본격적인 결합 포스팅에 앞서 프린트물들을 점검하는 시간을 가져보겠습니다. 본체 파츠들의 출력물 사진입니다. 매끄럽게 잘 출력되었습니다. 지난번과 달리 결합부를 맞춰보니 여유를 줘서 안정적으로 조립됩니다. 상판부입니다. 이부분은 아직 서포터 제거를 안 했기 때문에 통풍구 안의 서포트를 확인할 수 있습니다. 서포터를 제거한 모습입니다. 생각보다 잘 떨어져서 금방 작업을 마쳤습니다. 이 부품은 하단부의 받침으로 결합되어 휴대용 PC의 화면 각도를 목과 눈높이에 맞게 조절해주는 '홀더' 기능을 합니다. 평소에는 저렇게 수납되어서 있다가 지지대를 들어올리면 이렇게 서게 됩니다. 밑부분을 받쳤을 때 모습입니다. 각도는 40도 정도를 타겟으로 했는데 설계를 하다보니 길이 때문에 약간의 각도

라즈베리 PC 케이스 조립 완료 [내부링크]

1. 상판부 이물질 유입 방지 다이소에서 파는 방충망 보수 제품을 1000원에 사왔습니다. 처음에는 본드로 붙일 생각으로 눈대중으로 큰 사이즈를 샀는데 대보니 자체 접착부분 면적이 딱 맞아서 잘라서 바로 붙였습니다. 위에서 보면 이렇게 결합될 것 같습니다. 내부의 냉각판 홈을 피해서 테두리를 맞춰 잘라줍니다. 억센 재질이 아니라서 가위로도 쉽게 잘렸습니다. 붙이고 난 뒤 사진입니다. 사이즈도 딱 맞고 안정적으로 접착되서 묘하게 만족스러운 기분이 듭니다. 접착 뒤 위에서 본 사진입니다. 2. 좌측판 스위치 결합 좌측판에 팬과 전원 스위치를 결합한 사진입니다. 다행히 수정한 사이즈에는 잘 맞네요. 안쪽은 이렇게 돼있습니다. 후면 C타입 포트로부터 들어온 전원은 RPi 전원 스위치와 팬으로 연결됩니다. 팬도 5V로 맞췄기 때문에 별도의 조정은 필요 없습니다. 3. 스위치와 전원 배선 연결 후면의 내부 나사 결합 사진입니다. RPi PCB는 M2.5 사이즈의 서포터를, C타입 전원 포트는

RPi Anydesk 이용 데스크탑 원격 제어 [내부링크]

윈도우 자체 원격 접속이나 어려운 프로그램과 달리 Anydesk는 고유 주소만 입력하면 편리하게 원격 제어를 할 수 있습니다. 평소에는 데스크탑을 다른 노트북이나 데스크탑으로 조작하거나 휴대폰으로 확인만 했었는데 RPi 휴대용 PC가 완성됐으니 이젠 RPi로 조작을 할 수 있도록 설치를 해봤습니다. 하지만.. Anydesk 아이콘을 클릭해봐도 아무 반응이 없고, 터미널 창에 $Anydesk를 입력했더니 에러메세지가 출력돼서 실행되지 않았습니다. 간단했던 설치 과정과 해결방법까지 Anydesk를 사용하기 위한 과정을 살펴보겠습니다. 1. 설치 과정 https://anydesk.com/ko 원격 데스크톱 소프트웨어 거리를 극복하다 좋은 소프트웨어는 사용자들의 생산력과 창의성을 향상시킬 수 있다는 것을 믿습니다. 그렇기 때문에 모든 사람들이 전 세계 어디에서나 성공을 이룰 수 있게 도움을 주는 제품을 만드는 것이 저희 AnyDesk의 사명입니다. 더 알아보기 100,000명 이상의 고객이

파이썬 알고리즘 인터뷰 [내부링크]

저자 : 박상길 출판사 : 책만 출간 : 2020년 07월 15일 정가 : 38,000원 후기 : 처음 책의 표지를 보면서 든 궁금증은 일러스트 작가였습니다. '파이썬과 알고리즘 책인데 일러스트 삽화의 비중이 그렇게 높은가..?'가 제 생각이었습니다. 책을 여러권 봐왔지만 전공 도서의 어려운 내용들일수록 그림 자료가 중요하다는 것을 새삼 느낀 책이었습니다. 각종 알고리즘과 구조들을 그림으로 쉽게 알 수 있었는데 딱딱한 그림들이 아니라 곡선과 손글씨 같은 폰트 덕분에 어려운 알고리즘들 중간중간 눈도 쉬어가고, 이해도 더욱 쉽게 할 수 있었습니다. 책의 주요 진행은 알고리즘 이론 설명과 문제 풀이로 이뤄져있습니다. 코딩테스트를 목적으로 이 책을 보시는 분들이 많을텐데 이 책은 LeetCode(https://leetcode.com/) 사이트의 문제들을 기반으로 집필되었습니다. 백준, 프로그래머스, 코드업 등 코딩테스트 문제를 제공하는 여러 사이트들이 있지만 리트코드는 전세계 단위, 영어로

첫 딥러닝 실무 [내부링크]

저자 : 권영섭 출판사 : 남가람북스 출간 : 2020년 11월 11일 정가 : 26,000원 후기 : 교양이나 배경지식 수준으로 인공지능을 다룬 책이 아닌 머신러닝/딥러닝 책들을 여러 권 읽어봤는데 이번 책은 다른 책들과 구성이 달랐습니다. 보통 간단한 파이썬 기능이나 프레임워크 설명, 판다스와 Matplotlib 과 같은 데이터를 처리하기 위한 라이브러리를 설명한뒤 예제들을 바탕으로 한 DNN, CNN, RNN 설명이 이어지는 순서인데 비해 딥러닝 실무에서는 코드를 한줄도 찾을 수 없었습니다. 선형 대수, 행렬로 시작되어 '딥러닝의 기초 책인가..?' 싶다가도 다른 도서에서는 잘 다루지 않는 마할라노비스 거리, 자카드 유사도, 고속 푸리에 변환 등의 키워드 들을 보면서 '정말 실무를 경험한 저자가 아쉽고 지나쳤던 것들을 모아서 정리했구나.' 라고 느꼈습니다. 특정 책이 모든 지식을 담고, 무수한 질문들에 다 답변을 줄 수는 없는 것이지만 이 책을 읽고서는 확실히 평소에 궁금했고,