Weights & Biases와 함께하는 Keras 입문
W&B를 사용한 Keras 소개
이 글은 AI로 번역되었습니다. 오역이 있을 수 있으니 댓글로 알려주세요.
Created on September 15|Last edited on September 15
Comment
이 튜토리얼에서는 Keras를 사용해 Simpson 데이터셋의 이미지를 분류하는 간단한 합성곱 신경망을 단계별로 살펴보겠습니다.
또한 설정합니다 Weights & Biases 모델의 지표를 기록하고, 성능을 점검하며, 네트워크에 가장 적합한 아키텍처에 대한 결과를 공유하기 위함입니다. 이 예제에서는 편리한 호스팅 환경인 Google Colab을 사용하지만, 어디에서든 자체 학습 스크립트를 실행하고 W&B의 실험 추적 도구로 지표를 시각화할 수 있습니다.
먼저 실험 추적 라이브러리를 설치하고 무료 W&B 계정을 설정하세요:
- pip install wandb – W&B 라이브러리를 설치하세요
- import wandb – wandb 라이브러리를 임포트하세요
- from wandb.keras import WandbCallback – wandb를 임포트하세요 Keras 콜백
간단한 신경망 학습
하이퍼파라미터 정의하기
- wandb.init() – 새 W&B 런을 초기화합니다. 각 런은 학습 스크립트의 단일 실행입니다.
- wandb.config – 모든 하이퍼파라미터를 config 객체에 저장하세요. 이렇게 하면 W&B 앱에서 하이퍼파라미터 값으로 런을 정렬하고 비교할 수 있습니다.
# Initilize a new wandb runwandb.init(entity="wandb", project="keras-intro")# Default values for hyper-parametersconfig = wandb.config # Config is a variable that holds and saveshyperparameters and inputsconfig.learning_rate = 0.01config.batch_size = 128...config.activation = 'relu'config.optimizer = 'nadam'
신경망 정의하기
아래에서는 Keras에서 단순화한 VGG19 모델을 정의하고, 모델의 지표를 기록하고 성능과 출력을 시각화하며 실험을 손쉽게 추적할 수 있도록 다음 코드를 추가합니다:
- callbacks=[WandbCallback()] – 모든 레이어 차원과 모델 파라미터를 가져와 W&B 대시보드에 자동으로 기록합니다.
# Define the model architecture - This is a simplified version of the VGG19 architecturemodel = tf.keras.models.Sequential()# Set of Conv2D, Conv2D, MaxPooling2D layers with 32 and 64 filtersmodel.add(tf.keras.layers.Conv2D(filters = 32, kernel_size = (3, 3), padding ='same',activation ='relu', input_shape = input_shape))model.add(tf.keras.layers.MaxPooling2D(pool_size=(2, 2)))# Flattens our array so we can feed the convolution layer outputs (a matrix)into our fully connected layer (an array)model.add(tf.keras.layers.Flatten())model.add(tf.keras.layers.Dense(512, activation ='relu'))model.add(tf.keras.layers.Dense(num_classes, activation = "softmax"))# Define the optimizeroptimizer = tf.keras.optimizers.Nadam(lr=config.learning_rate, beta_1=0.9,beta_2=0.999, clipnorm=1.0)model.compile(loss = "categorical_crossentropy", optimizer = optimizer, metrics=['accuracy'])...# Fit the model to the training datamodel.fit_generator(datagen.flow(X_train, y_train, batch_size=config.batch_size),steps_per_epoch=len(X_train) / 32, epochs=config.epochs,validation_data=(X_test, y_test), verbose=0,callbacks=[WandbCallback(data_type="image", validation_data=(X_test, y_test), labels=character_names),tf.keras.callbacks.EarlyStopping(patience=10,restore_best_weights=True)])
예측 수행하기
이 섹션에서는 예측을 수행하고, wandb.log()를 사용해 사용자 정의 이미지를 기록합니다. 여기서는 테스트 이미지 위에 예측 확률을 오버레이하여 로그합니다.
- wandb.log() – 사용자 정의 객체를 기록합니다. 이미지, 동영상, 오디오 파일, HTML, 플롯, 포인트 클라우드 등 다양한 형식을 지원합니다. 여기서는 wandb.log 를 사용해 실제 레이블과 예측 레이블을 오버레이한 심슨 캐릭터 이미지를 기록합니다.
시각화
프로젝트 개요
- 살펴보기 프로젝트 페이지 공유된 프로젝트에서 결과를 확인하려면
- 'option+space'를 눌러 Runs 테이블을 펼치고, 이 스크립트를 시도한 모든 사용자의 결과를 한눈에 비교하세요.
- Runs 이름을 클릭하면 해당 Run의 개별 Run 페이지로 이동하여 자세히 살펴볼 수 있습니다.

성능 시각화

코드 검토
Overview 탭은 코드로 연결되는 링크를 자동으로 가져옵니다. 이 경우에는 Google Colab 링크입니다. git 리포지토리에서 스크립트를 실행 중이라면, 최신 git 커밋의 SHA를 추적하여 사용자의 GitHub 리포지토리에서 해당 커밋 버전의 코드로 연결되는 링크를 제공합니다.

시스템 메트릭 시각화
Runs 페이지의 System 탭에서는 모델이 자원을 얼마나 효율적으로 사용했는지 시각화할 수 있습니다. 한곳에서 GPU, 메모리, CPU, 디스크, 네트워크 사용량을 모니터링할 수 있습니다.

다음 단계
Add a comment