머신 러닝

    [머신 러닝] 머신러닝을 위한 텐서플로

    텐서플로 훑어보기 텐서플로는 강력한 수치 계산용 라이브러리입니다. 특히 대규모 머신러닝에 잘 맞도록 튜닝되어 있습니다. 텐서플로가 제공하는 것들을 간단히 요약하면 아래와 같습니다. 핵심 구조는 넘파이와 매우 비슷하지만 GPU를 지원합니다. (여러 장치와 서버에 대해서) 분산 컴퓨팅을 지원합니다. 일종의 JIT(just-in-time) 컴파일러를 포함합니다. 속도를 높이고 메모리 사용량을 줄이기 위해 계산을 최적화합니다. 이를 위해 파이썬 함수에서 계산 그래프를 추출한 다음 최적화하고 효율적으로 실행합니다. 계산 그래프는 플랫폼에 중립적인 포맷으로 내보낼 수 있으므로 한 환경에서 텐서플로 모델을 훈련하고 다른 환경에서 실행할 수 있습니다. 텐서플로는 자동 미분 기능과 RMSProp, Nadam과 같은 고성..

    [머신 러닝] 심층 신경망 훈련하기

    고해상도 이미지에서 수백 종류의 물체를 감지하는 것처럼 아주 복잡한 문제를 다뤄야 한다면 수백 개의 뉴런으로 구성된 10개 이상의 층을 수십만 개의 가중치로 연결해 훨씬 더 깊은 심층 신경망을 훈련해야 할 것입니다. 심층 신경망 훈련은 쉽지 않습니다. 훈련 중 다음과 같은 문제를 맞닥뜨릴 수 있습니다. 까다로운 그레이디언트 소실 또는 그레이디언트 폭주 문제에 직면할 수 있습니다. (신경망의 아래쪽으로 갈수록 그레이디언트가 점점 더 작아지거나 커지는 현상입니다.) 대규모 신경망을 위한 훈련 데이터가 충분하지 않거나 레이블을 만드는 작업에 비용이 많이 들 수 있습니다. 훈련이 극단적으로 느려질 수 있습니다. 모델이 너무 복잡해 과대적합될 위험이 큽니다. 특히 훈련 샘플이 충분하지 않거나 잡음이 많은 경우에 ..

    [닮은 배우 분류기] 데이터 적재

    방법 선택 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')