[TIL] Numpy 데이터를 Tensor 데이터로 변경하기

Hanna·2022년 1월 9일
0

CV

목록 보기
3/5

numpy와 tensor와의 관계
tensor : 호환성이 낮지만 gpu나 tensorflow 내부의 기능을 극대화 가능함
numpy : 호환성이 좋지만 tensorflow 기능을 극대화 하지 못함. tensorflow 외 pytorch에서도 사용 가능함

# numpy 기반 cifar10 데이터셋
(X_train, y_train), (X_test, y_test) = tf.keras.datasets.cifar10.load_data()

# 방법1
tf.data.Dataset.from_tensors(X_train)
tf.data.Dataset.from_tensors((X_train, y_train))

# 방법2
tf.data.Dataset.from_tensor_slices(X_train)
tf.data.Dataset.from_tensor_slices((X_train, y_train))

방법1 : 데이터셋 전체를 기반으로 데이터를 만들어줌
방법2 : 데이터 1개를 기반으로 만들어 줌 -> ML에 더 적합함

# Tensorflow2 quichstart for expert
train_ds = tf.data.Dataset.from_tensor_slices(
    (x_train, y_train)).shuffle(10000).batch(32)

test_ds = tf.data.Dataset.from_tensor_slices((x_test, y_test)).batch(32)

Cifar10 데이터를 Tenosr data로 변해서 돌리기
중요한 이유 : Data Augmentation이 가능함

(X_train, y_train), (X_test, y_test) = tf.keras.datasets.cifar10.load_data()
input_ = tf.keras.Input((32, 32, 3))

X_train = X_train / 255
X_test = X_test / 255

train = tf.data.Dataset.from_tensor_slices((X_train, y_train)).batch(32)
y_train = tf.keras.utils.to_categorical(y_train)

x = tf.keras.layers.Conv2D(32, 3)(input_)
x = tf.keras.layers.ReLU()(x)
x = tf.keras.layers.MaxPool2D(2)(x)
x = tf.keras.layers.Conv2D(64, 3)(x)
x = tf.keras.layers.ReLU()(x)
x = tf.keras.layers.Conv2D(64, 3)(x)x = tf.keras.layers.ReLU()(x)
x = tf.keras.layers.Flatten()(x)
x = tf.keras.layers.Dense(1024)(x)
x = tf.keras.layers.Dense(10, activation='softmax')(x)

model = tf.keras.models.Model(input_, x)
model.summary()

model.compile(loss=tf.keras.losses.CategoricalCrossentropy(from_logits=True),
              optimizer='adam',
              metrics=['accuracy'])

history = model.fit(train, epochs=10)
pd.DataFrame(history.history).plot.line()
profile
매일 성장하고 있습니다

0개의 댓글