- 인쇄
- PDF
Tensorflow로 MNIST 손글씨 이미지 분류
- 인쇄
- PDF
VPC 환경에서 이용 가능합니다.
Data Forest를 사용하여 Singlebatch로 작업을 제출하는 방법을 설명합니다.
Step 1. 계정 생성
- Data Forest 계정을 생성하는 방법은 계정 생성 및 관리를 참고해 주십시오.
- 앱을 생성하는 방법은 앱 생성 및 관리를 참고해 주십시오.
Step 2. 데이터 셋 확인
이 예제에서는 MNIST 데이터 셋을 사용합니다. MNIST 데이터 셋은 손글씨 이미지로 구성된 숫자 데이터 셋입니다. 60,000개의 학습 데이터셋(train dataset)과 10,000개의 테스트 데이터 셋(test dataset)으로 이루어져 있고 각 이미지에 대응되는 숫자 레이블 데이터가 있습니다.
파일 | 설명 |
---|---|
train-images-idx3-ubyte.gz | 학습 셋 이미지 |
train-labels-idx1-ubyte.gz | 학습 셋 레이블 |
t10k-images-idx3-ubyte.gz | 테스트 셋 이미지 |
t10k-labels-idx1-ubyte.gz | 테스트 셋 레이블 |
Step 3. Workspace 생성
워크스페이스를 생성하는 방법은 다음과 같습니다.
- 네이버 클라우드 플랫폼 콘솔에서 Services > Big Data & Analytics > Data Forest 메뉴를 차례대로 클릭해 주십시오.
- AI Forest > Workspaces > [워크스페이스 생성] > [Advanced 워크스페이스] 를 클릭해 주십시오.
- Data Forest 계정을 선택하고 워크스페이스 이름을 설정한 뒤 워크스페이스 유형은 ’Singlebatch’를 선택해 주십시오.
- 도커 이미지는 Tensorflow를 선택해 주십시오.참고
Tensorflow는 구글에서 개발한 오픈소스 머신 러닝 라이브러리입니다. Tensorflow에 대한 자세한 설명은 Tensorflow 홈페이지를 참고해 주십시오.
- 이미지 버전을 선택해 주십시오.
이 예제에서는 r2.1를 선택합니다.
- GPU 모델의 이름, GPU 코어 개수, 메모리 용량을 선택해 주십시오.
이 예제에서는 기본 설정값으로 진행합니다.
- 데이터 설정 영역에 정보를 입력하고 [추가] 버튼을 클릭해 주십시오.
- 입력
- Input Path: 컨테이너로 복사될 입력 데이터의 경로 입력, ‘/user/{username}/data_in’ 입력
- Input Container Local Path: 입력 데이터를 저장 할 컨테이너 경로 입력
- 출력
- Output Path: 결과물을 저장할 HDFS 경로 입력, ‘/user/{username}/data_out’ 입력
- Output Container Local Path: 출력 데이터가 존재하는 컨테이너의 경로 입력
- Overwrite: HDFS에 출력 데이터 저장 시 이미 파일이 있을 경우에 덮어 쓰기 여부 설정
- 입력
- [다음] 버튼을 클릭해 주십시오. 워크스페이스 생성이 완료됩니다.
Step 4. 예제 코드 다운로드
워크스페이스의 도커 이미지와 버전에 맞춰 예제 파일을 다운로드해 주십시오.
예제를 수행하기 위해 필요한 예제 코드는 다음과 같습니다.
버전 | 파일 |
---|---|
Tensorflow-r1.14 | mnist_tf1.zip |
Tensorflow-r2.1 | mnist_tf2.zip |
워크스페이스 생성 시 설정한 Tensorflow 버전에 맞는 예제 코드로 진행해 주십시오. 예제에서는 Tensorflow-r2.1를 선택했기 때문에 mnist_tf2.zip
을 다운로드했습니다.
tf-mnist.py
은 하나의 히든 레이어로 구성된 모델에 대해 'tf.keras.datasets.mnist'에서 제공하는 MNIST 학습셋으로 training을 진행하고 테스트 셋으로 evaluation을 진행하는 코드입니다.
...
# 데이터 셋 불러오기
mnist = tf.keras.datasets.mnist
(x_train, y_train), (x_test,y_test) = mnist.load_data()
# 데이터 전처리하기
x_train, x_test = x_train/255.0, x_test/255.0
# 모델 구성하기
model = tf.keras.models.Sequential([
tf.keras.layers.Flatten(input_shape=(28, 28)),
tf.keras.layers.Dense(128, activation='relu'),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.Dense(10, activation='softmax')
])
# 컴파일 하기
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
# 저장과 복원을 위한 체크포인트 및 콜백함수 지정하기
checkpoint_path = FLAGS.log_dir+"/cp-{epoch:04d}.ckpt"
checkpoint_dir = os.path.dirname(checkpoint_path)
cp_callback = tf.keras.callbacks.ModelCheckpoint(
filepath=checkpoint_path,
verbose=1,
save_weights_only=True,
period=5)
# 가중치 저장하기
model.save_weights(checkpoint_path.format(epoch=0))
# 모델 훈련하기
model.fit(x_train, y_train, epochs=FLAGS.max_steps, callbacks=[cp_callback])
...
Step 5. Workspace Browser에 파일 업로드
mnist.zip의 압축을 풀고 Workspace Browser에 업로드하는 방법은 다음과 같습니다.
- 네이버 클라우드 플랫폼 콘솔에서 Services > Big Data & Analytics > Data Forest 메뉴를 차례대로 클릭해 주십시오.
- AI Forest > Workspaces를 클릭해 주십시오.
- 계정을 선택하고 워크스페이스 이름 옆의 워크스페이스 링크 아이콘을 클릭해 주십시오.
- 파일을 업로드할 워크스페이스를 선택하고 [업로드] 버튼을 클릭해 주십시오.
- 압축을 푼 'mnist.zip'의 파일을 업로드 창에 끌어다 놓으십시오.
- [전송시작] 버튼을 클릭해 주십시오.
- 업로드가 완료되면 [확인] 버튼을 클릭해 주십시오.
Step 6. Singlebatch로 작업 제출
Singlebatch로 작업을 제출하는 방법은 다음과 같습니다.
- 네이버 클라우드 플랫폼 콘솔에서 Services > Big Data & Analytics > Data Forest > AI Forest > Workspace Browser 메뉴를 차례대로 클릭해 주십시오.
- 계정을 선택한 후 워크스페이스를 선택해 주십시오.
- 실행할 파일을 선택하고 [실행] 버튼을 클릭해 주십시오.
- 다음과 같이 정보를 입력해 주십시오.
- [확인] 버튼을 클릭해 주십시오. AI 앱이 실행됩니다.
Step 7. 작업 로그 및 결과 확인
작업을 실행한 후 수행 로그를 확인하는 방법은 다음과 같습니다.
- 네이버 클라우드 플랫폼 콘솔에서 Services > Big Data & Analytics > Data Forest > Apps 메뉴를 차례대로 클릭해 주십시오.
- 계정을 선택한 후 상세 정보를 확인할 앱을 클릭해 주십시오.
- 앱 상세 정보에서 Quick links > AppMaster UI 항목의 URL에 접속해 주십시오.
- 로그인 창이 나타나면 Data Forest 계정 생성 시 입력한 계정 이름과 비밀번호를 입력해 주십시오.
- Applications 메뉴에서 작업 실행 시 입력한 앱 이름으로 수행된 ID를 찾아 클릭해 주십시오.
- 해당 애플리케이션 ID의 Logs 를 클릭해 주십시오. 수행한 작업의 로그를 확인할 수 있습니다.
- 작업이 완료되고 결과물을 확인하려면
{ Workspace 생성 시 출력 HDFS Path에 입력한 경로}/{--log_dir 인자로 전달한 값}
의 경로를 확인해 주십시오.