분류 전체보기
[닮은 배우 분류기] 데이터 적재
방법 선택 1천장이나 되는 사진을 어떻게 직접 다 들고올까..하고 생각해보니 간단하게 우선 웹 스크래핑이 떠올랐습니다. 학교에서 진행하는 프로그램으로 IOWA 대학의 이강표 교수님께 웹 스크래핑을 배웠던 경험이 있어 웹 스크래핑을 한 번 써볼까..생각도 했지만 이내 더 간단한 방법이 있음을 알게 됐습니다. bing_image_downloader라는 놀라운 도구가 있었습니다! 이 라이브러리를 이용하면 Bing.com에서 검색한 결과에 나오는 이미지들을 다운로드할 수 있습니다. bing_image_downloader 설치 방법 이 라이브러리의 설치 방법은 아래와 같습니다. $ pip install bing-image-downloader 또는 $ git clone https://github.com/guruga..
[닮은 배우 분류기] 닮은 배우 분류기 만들기 시작!
핸즈 온 머신러닝으로 계속 공부만 하려니 너무 좀이 쑤셔서 뭐라도 하나 만들어보면서 진도를 나가기로 했습니다. 아이스는 아메리카노와 BlogErin과 같이 하기로 했습니다. 어떤 걸 해볼까 고민을 했는데, 토이 프로젝트로 해보는 만큼 재밌게 해보자는 생각이 들었습니다. 따라서 남자 배우 10명, 여자 배우 10명 각각에 대해서 대략 1천장의 사진을 모아서 학습을 시킨 다음, 새로운 사진이 들어왔을 때 누가 누굴 얼마나 닮았는지에 대한 %를 예측하는 모델을 만들어 볼 생각입니다. 처음 해보는 머신러닝 프로젝트라 잘 해볼 수 있을지 모르겠지만, 최선을 다해서 해보겠습니다!
[머신 러닝] 신경망 하이퍼파라미터 튜닝하기
신경망의 유연성은 조정할 하이퍼파라미터가 많기 때문에 단점이기도 합니다. 아주 간단한 것에서 복잡한 것까지 많은 것을 바꿀 수 있습니다. 하이퍼파라미터를 튜닝하는 한 가지 방법은 여러 조합을 시도해보고 어떤 것이 가장 좋은 점수를 내는지 확인하는 것입니다. 예를 들어 GridSearchCV나 RandomizedSearchCV를 사용해 하이퍼파라미터 공간을 탐색할 수 있습니다. 아래 코드를 참고하세요. HTML 삽입 미리보기할 수 없는 소스
[머신 러닝] 텐서보드를 이용해 시각화하기
텐서보드를 이용해 시각화하기 텐서보드를 이용해 훈련하는 동안 학습 곡선을 그리거나 여러 실행 간의 학습 곡선을 비교하고 계산 그래프 시각화와 훈련 통계 분석을 수행할 수 있습니다. 또한 모델이 생성한 이미지를 확인하거나 3D에 투영된 복잡한 다차원 데이터를 시각화하고 자동으로 클러스터링을 해주는 등 많은 기능을 제공합니다. 텐서보드를 이용하려면 프로그램을 수정하여 이벤트 파일이라는 이진 로그 파일에 시각화하려는 데이터를 출력해야합니다. 각각의 이진 데이터 레코드를 서머리라고 합니다. 텐서보드 서버는 로그 디렉터리를 모니터링하고 자동으로 변경사항을 읽어 그래프를 업데이트합니다. 훈련하는 중간에 학습 곡선같이 실시간 데이터를 시각화할 수 있습니다. 일반적으로 텐서보드 서버가 루트 로그 디렉터리를 가리키고 프..
[머신 러닝] 콜백 사용하기
콜백 사용하기 훈련이 몇 시간동안 지속되는 경우에는 훈련 마지막에 모델을 저장하는 것 뿐만 아니라 훈련 도중 일정 간격으로 체크포인트를 저장할 필요가 있습니다. fit() 메소드의 callbacks 매개변수를 사용해서 케라스가 훈련의 시작이나 끝에 호출할 객체 리스트를 지정할 수 있습니다. 또는 에포크의 시작이나 끝, 각 배치 처리 전후에 호출할 수도 있습니다. 예를 들어 ModelCheckPoint는 훈련하는 동안 일정한 간격으로 모델의 체크포인트를 저장합니다. 기본적으로는 매 에포크의 끝에서 호출됩니다. [...] # 모델을 만들고 컴파일하기 checkpoint_cb = keras.callbacks.ModelCheckPoint('filename.h5') history = model.fit(X_trai..
[머신 러닝] 모델 저장과 복원
모델 저장과 복원 시퀀셜 API와 함수형 API를 사용하면 훈련된 케라스 모델을 저장하는 것은 쉽습니다. 아래와 같이 할 수 있습니다. model = keras.models.Sequential([...]) model.compile([...]) model.fit([...]) mode.save('filename.h5') # HDF5 포맷으로 저장 이렇게 저장하면 모델 구조와 층의 모든 파라미터 등 모든 정보를 저장합니다. 일반적으로 하나의 파이썬 스크립트에서 모델을 훈련하고 저장한 다음 하나 이상의 스크립트에서 모델을 로드하고 예측을 만드는 데 사용합니다. 모델 로드 또한 다음과 같이 간단합니다. model = keras.models.load_model('filename.h5')
[머신 러닝] 다층 퍼셉트론
다층 퍼셉트론과 역전파 다층 퍼셉트론은 입력층 하나와 은닉층이라 불리는 하나 이상의 TLU 층과 출력층으로 구성됩니다. 입력층과 가까운 층을 하위 층, 출력층에 가까운 층을 상위 층이라 부릅니다. 출력층을 제외하고 모든 층은 편향 뉴런을 포함하며 다음 층과 완전히 연결돼 있습니다. 은닉층을 여러 개 쌓아 올린 인공 신경망을 심층 신경망(deep neural network, DNN)이라고 합니다. 딥러닝은 심층 신경망을 연구하는 분야이며 조금 더 일반적으로는 연산이 연속하여 길게 연결된 모델을 연구합니다. 다층 퍼셉트론을 훈련할 방법을 찾는 연구가 긴 시간 지속되다가 데이비드 루멜하트, 제프리 힌턴, 로날드 윌리엄스가 역전파 훈련 알고리즘을 소개했습니다. 이 알고리즘은 효율적 기법으로 그레이디언트를 자동으..
[머신 러닝] 퍼셉트론
퍼셉트론 퍼셉트론은 가장 간단한 인공 신경망 중 하나로 1957년에 프랑크 로젠블라트가 제안했습니다. 퍼셉트론은 TLU(threshold logic unit)또는 LTU(linear threshold unit)이라고 불리는 인공 뉴런을 기반으로 합니다. 아래 그림처럼 입력과 출력이 어떤 숫자이고 각 입력 연결은 가중치와 연관되어 있습니다. TLU는 입력의 가중치 합을 계산(\( z = w_{1}x_{1} + w_{2}x_{2} + \dots + w_{n}x_{n} = x^{T}w \))한 뒤 계산된 합에 계단 함수를 적용하여 결과를 출력합니다. 즉, \(h_{w}(x) = step(z), z=x^{T}w\) 입니다. 퍼셉트론에서 가장 널리 사용되는 계단 함수는 헤비사이드 계단 함수(heaviside st..