Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Fashion MNIST

import tensorflow as tf
print(f'TensorFlow {tf.__version__}')
TensorFlow 2.9.1
def print_scores(X, y):
    loss, acc = model.evaluate(X, y)
    print(f'Loss: {loss:.3f}    Acc.:{acc:.3%}')

1데이터 로드

동일한 Fashion MNIST 데이터를 TensorFlow와 PyTorch 각각의 방식으로 적재합니다.

TensorFlow
PyTorch
from tensorflow.keras.datasets import fashion_mnist
(X_train, y_train), (X_test, y_test) = fashion_mnist.load_data()

X_train = X_train.reshape(-1, 28, 28, 1)
X_test = X_test.reshape(-1, 28, 28, 1)

X_train = X_train / 255
X_test = X_test / 255

Q: 형식은 동일한데, 내용이 다르면 같은 신경망이 동일 수준의 성능을 낼까요?

2모델 구현 및 학습

동일한 분류 과제를 TensorFlow와 PyTorch로 각각 정의하고 학습합니다.

TensorFlow
PyTorch
from tensorflow.keras import Sequential
from tensorflow.keras import layers

model = Sequential()
model.add(layers.InputLayer((28, 28, 1)))
model.add(layers.Conv2D(32, kernel_size=(3, 3), activation='relu'))
model.add(layers.Conv2D(32, kernel_size=(3, 3), activation='relu'))
model.add(layers.MaxPooling2D())
model.add(layers.Flatten())
model.add(layers.Dense(10, activation='softmax'))

from tensorflow.keras.losses import sparse_categorical_crossentropy
from tensorflow.keras.optimizers import Adam

model.compile(loss=sparse_categorical_crossentropy, optimizer=Adam(), metrics=['acc'])
history = model.fit(X_train, y_train, batch_size=128, epochs=10, validation_split=0.2)
print_scores(X_train, y_train)
1875/1875 [==============================] - 4s 2ms/step - loss: 0.1708 - acc: 0.9395
Loss: 0.171    Acc.:93.950%
print_scores(X_test, y_test)
313/313 [==============================] - 1s 3ms/step - loss: 0.2597 - acc: 0.9090
Loss: 0.260    Acc.:90.900%