TensorFlow
import sys, platform
print(sys.version)
print(platform.platform())1공통 패키지¶
import numpy as np
import pandas as pd
import matplotlib
import sklearn
print(f'NumPy {np.__version__}')
print(f'pandas {pd.__version__}')
print(f'matplotlib {matplotlib.__version__}')
print(f'Scikit-Learn {sklearn.__version__}')import tensorflow as tf
import keras
print(f'TensorFlow {tf.__version__}')
print(f'Keras {keras.__version__}')
assert tf.config.list_physical_devices('GPU'), 'No GPU available'2CIFAR-10¶
(train_images, train_labels), (test_images, test_labels) = keras.datasets.cifar10.load_data()from sklearn.model_selection import train_test_split
# train/validation split
train_images, val_images, train_labels, val_labels = train_test_split(train_images, train_labels, test_size=0.2, random_state=0)train_dataset = tf.data.Dataset.from_tensor_slices((train_images, train_labels))
val_dataset = tf.data.Dataset.from_tensor_slices((val_images, val_labels))
test_dataset = tf.data.Dataset.from_tensor_slices((test_images, test_labels))
train_dataset = train_dataset.shuffle(1000).batch(64).prefetch(4)
val_dataset = val_dataset.batch(64)
test_dataset = test_dataset.batch(32)3ConvNet¶
import keras
from keras import layers
keras.backend.clear_session()
model = keras.Sequential([
keras.Input(shape=(32, 32, 3)),
keras.layers.Rescaling(1./255),
layers.Conv2D(6, (5, 5), activation='relu'),
layers.MaxPooling2D((2, 2)),
layers.Conv2D(16, (5, 5), activation='relu'),
layers.MaxPooling2D((2, 2)),
layers.Flatten(),
layers.Dense(120, activation='relu'),
layers.Dense(84, activation='relu'),
layers.Dense(10)
])
model.summary()
model.compile(
optimizer='adam',
loss=keras.losses.SparseCategoricalCrossentropy(from_logits=True),
metrics=['accuracy'])
checkpoint_filepath = 'convnet-cifar10.keras'
history = model.fit(
train_dataset, epochs=2, validation_data=val_dataset,
callbacks=[
keras.callbacks.ModelCheckpoint(checkpoint_filepath, save_best_only=True),
keras.callbacks.TensorBoard(log_dir='logs')])
model = keras.models.load_model(checkpoint_filepath)
test_loss, test_acc = model.evaluate(test_dataset, verbose=0)
print(f'[Test] Loss: {test_loss:.4f}, Accuracy: {test_acc:.4f}')import pandas as pd
import matplotlib.pyplot as plt
history_table = pd.DataFrame(history.history)
print(history_table)
ax1 = plt.subplot(1, 2, 1)
history_table[['loss', 'val_loss']].plot(ax=ax1)
ax2 = plt.subplot(1, 2, 2)
history_table[['accuracy', 'val_accuracy']].plot(ax=ax2)4CIFAR-100¶
(train_images, train_labels), (test_images, test_labels) = keras.datasets.cifar100.load_data()from sklearn.model_selection import train_test_split
# train/validation split
train_images, val_images, train_labels, val_labels = train_test_split(train_images, train_labels, test_size=0.2, random_state=0)train_dataset = tf.data.Dataset.from_tensor_slices((train_images, train_labels))
val_dataset = tf.data.Dataset.from_tensor_slices((val_images, val_labels))
test_dataset = tf.data.Dataset.from_tensor_slices((test_images, test_labels))
train_dataset = train_dataset.shuffle(1000).batch(64).prefetch(4)
val_dataset = val_dataset.batch(64)
test_dataset = test_dataset.batch(32)5ResNet¶
input_shape = train_images.shape[1:] # (32, 32, 3)
num_classes = len(np.unique(train_labels))
keras.backend.clear_session()
model = keras.applications.ResNet50(
include_top=True,
weights=None,
input_shape=input_shape,
classes=num_classes,)
model.summary()
loss_fn = keras.losses.SparseCategoricalCrossentropy(from_logits=False)
model.compile(optimizer="adam", loss=loss_fn, metrics=["accuracy"])
checkpoint_filepath = 'resnet-cifar100.keras'
history = model.fit(
train_dataset, epochs=2, validation_data=val_dataset,
callbacks=[
keras.callbacks.ModelCheckpoint(checkpoint_filepath, save_best_only=True),
keras.callbacks.TensorBoard(log_dir='logs')])
model = keras.models.load_model(checkpoint_filepath)
test_loss, test_acc = model.evaluate(test_dataset, verbose=0)
print(f'[Test] Loss: {test_loss:.4f}, Accuracy: {test_acc:.4f}')import pandas as pd
import matplotlib.pyplot as plt
history_table = pd.DataFrame(history.history)
print(history_table)
ax1 = plt.subplot(1, 2, 1)
history_table[['loss', 'val_loss']].plot(ax=ax1)
ax2 = plt.subplot(1, 2, 2)
history_table[['accuracy', 'val_accuracy']].plot(ax=ax2)