Documentation Index Fetch the complete documentation index at: https://translations.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
Colab에서 실행해 보기
W&B를 사용해 머신러닝 실험을 추적하고, 데이터셋 버전을 관리하며, 프로젝트에서 협업하세요.
이 Colab 노트북에서는 WandbModelCheckpoint 콜백을 소개합니다. 이 콜백을 사용해 모델 체크포인트를 W&B 아티팩트 로 로깅하세요.
먼저 최신 버전의 W&B를 설치하겠습니다. 그런 다음 이 Colab 인스턴스를 W&B를 사용할 수 있도록 인증하겠습니다.
! pip install - qq - U wandb
import os
import tensorflow as tf
from tensorflow.keras import layers
from tensorflow.keras import models
import tensorflow_datasets as tfds
# W&B 관련 임포트
import wandb
from wandb.integration.keras import WandbMetricsLogger
from wandb.integration.keras import WandbModelCheckpoint
W&B를 처음 사용하거나 로그인되어 있지 않은 경우, wandb.login()을 실행한 후 표시되는 링크를 클릭하면 회원가입/로그인 페이지로 이동합니다. 무료 계정 은 몇 번의 클릭만으로 쉽게 만들 수 있습니다.
재현 가능한 머신러닝을 위해 적절한 설정(config) 시스템을 사용하는 것은 권장되는 모범 사례입니다. W&B를 사용하면 각 실험의 하이퍼파라미터를 추적할 수 있습니다. 이 Colab 노트북에서는 간단한 Python dict를 설정(config) 시스템으로 사용합니다.
configs = dict (
num_classes = 10 ,
shuffle_buffer = 1024 ,
batch_size = 64 ,
image_size = 28 ,
image_channels = 1 ,
earlystopping_patience = 3 ,
learning_rate = 1e-3 ,
epochs = 10
)
이 Colab 노트북에서는 TensorFlow Datasets 카탈로그에 포함된 Fashion-MNIST 데이터셋을 사용합니다. TensorFlow/Keras를 이용해 간단한 이미지 분류 파이프라인을 구축하는 것을 목표로 합니다.
train_ds, valid_ds = tfds.load( 'fashion_mnist' , split = [ 'train' , 'test' ])
AUTOTUNE = tf.data. AUTOTUNE
def parse_data ( example ):
# 이미지 가져오기
image = example[ "image" ]
# image = tf.image.convert_image_dtype(image, dtype=tf.float32)
# 레이블 가져오기
label = example[ "label" ]
label = tf.one_hot(label, depth = configs[ "num_classes" ])
return image, label
def get_dataloader ( ds , configs , dataloader_type = "train" ):
dataloader = ds.map(parse_data, num_parallel_calls = AUTOTUNE )
if dataloader_type == "train" :
dataloader = dataloader.shuffle(configs[ "shuffle_buffer" ])
dataloader = (
dataloader
.batch(configs[ "batch_size" ])
.prefetch( AUTOTUNE )
)
return dataloader
trainloader = get_dataloader(train_ds, configs)
validloader = get_dataloader(valid_ds, configs, dataloader_type = "valid" )
def get_model ( configs ):
backbone = tf.keras.applications.mobilenet_v2.MobileNetV2( weights = 'imagenet' , include_top = False )
backbone.trainable = False
inputs = layers.Input( shape = (configs[ "image_size" ], configs[ "image_size" ], configs[ "image_channels" ]))
resize = layers.Resizing( 32 , 32 )(inputs)
neck = layers.Conv2D( 3 , ( 3 , 3 ), padding = "same" )(resize)
preprocess_input = tf.keras.applications.mobilenet.preprocess_input(neck)
x = backbone(preprocess_input)
x = layers.GlobalAveragePooling2D()(x)
outputs = layers.Dense(configs[ "num_classes" ], activation = "softmax" )(x)
return models.Model( inputs = inputs, outputs = outputs)
tf.keras.backend.clear_session()
model = get_model(configs)
model.summary()
model.compile(
optimizer = "adam" ,
loss = "categorical_crossentropy" ,
metrics = [ "accuracy" , tf.keras.metrics.TopKCategoricalAccuracy( k = 5 , name = 'top@5_accuracy' )]
)
# W&B 실행 초기화
run = wandb.init(
project = "intro-keras" ,
config = configs
)
# 모델 학습
model.fit(
trainloader,
epochs = configs[ "epochs" ],
validation_data = validloader,
callbacks = [
WandbMetricsLogger( log_freq = 10 ),
WandbModelCheckpoint( filepath = "models/model.keras" ) # 여기서 WandbModelCheckpoint 사용에 주목하세요
]
)
# W&B 실행 종료
run.finish()