tensorflow

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

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

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

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

    [머신 러닝] 신경망 하이퍼파라미터 튜닝하기

    신경망의 유연성은 조정할 하이퍼파라미터가 많기 때문에 단점이기도 합니다. 아주 간단한 것에서 복잡한 것까지 많은 것을 바꿀 수 있습니다. 하이퍼파라미터를 튜닝하는 한 가지 방법은 여러 조합을 시도해보고 어떤 것이 가장 좋은 점수를 내는지 확인하는 것입니다. 예를 들어 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)이라고 합니다. 딥러닝은 심층 신경망을 연구하는 분야이며 조금 더 일반적으로는 연산이 연속하여 길게 연결된 모델을 연구합니다. 다층 퍼셉트론을 훈련할 방법을 찾는 연구가 긴 시간 지속되다가 데이비드 루멜하트, 제프리 힌턴, 로날드 윌리엄스가 역전파 훈련 알고리즘을 소개했습니다. 이 알고리즘은 효율적 기법으로 그레이디언트를 자동으..