즐거운프로그래밍

[딥러닝] CNN 활용 예제(엔비디아 자료 보고 신경망 구성하기)

수수께끼 고양이 2023. 11. 1. 16:22
728x90
반응형

참고 링크

End-to-End Deep Learning for Self-Driving Cars | NVIDIA Technical Blog

 

End-to-End Deep Learning for Self-Driving Cars | NVIDIA Technical Blog

We have used convolutional neural networks (CNNs) to map the raw pixels from a front-facing camera to the steering commands for a self-driving car.

developer.nvidia.com

 

 

엔디비아 디벨롭 예제 1

import tensorflow as tf

model = tf.keras.Sequential([
    tf.keras.layers.InputLayer(input_shape=(66,200,3)),
    tf.keras.layers.Conv2D(24,(5,5),(2,2),activation='relu'), # 커널5*5 사이즈 -> stride 2,2
    tf.keras.layers.Conv2D(36,(5,5),(2,2),activation='relu'), # 커널7*7 사이즈 -> stride 3,3
    tf.keras.layers.Conv2D(48,(5,5),(2,2),activation='relu'), 
    tf.keras.layers.Conv2D(64,(3,3),(1,1),activation='relu'), # 커널3*3 사이즈 -> stride 1,1
    tf.keras.layers.Conv2D(64,(3,3),activation='relu'), # stride 1,1은 생략해도도 됨
    tf.keras.layers.Flatten(), #납작하게 해주는 것, 주어진 그림(1164)과 달리 12개가 외부에서 들어감
    tf.keras.layers.Dense(100,activation='relu'),
    tf.keras.layers.Dense(50,activation='relu'),
    tf.keras.layers.Dense(10,activation='softmax')
])

model.summary()

# convolution은 무조건 relu
# Dense는 relu or softmax

 

 

 

 

* cifar100의 경우 나올때도 100으로 맞춰줌
tf.keras.layers.Dense(100,activation='softmax')

* mnist의 경우 Fn가 1층으로 함
tf.keras.layers.InputLayer(input_shape=(32,32,1))

엔디비아 디벨롭 예제 2

import tensorflow as tf

mnist=tf.keras.datasets.cifar10

(x_train, y_train),(x_test, y_test)=mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0 # 모든 픽셀의 숫자를 255.0으로 나누어 각 픽셀을 실수로 바구어 인공신경망에 입력하게 됨

model = tf.keras.Sequential([
    tf.keras.layers.InputLayer(input_shape=(32,32,3)),
    tf.keras.layers.Conv2D(24,(3,3),(1,1),activation='relu'), # 커널5*5 사이즈 -> stride 2,2
    tf.keras.layers.Conv2D(36,(3,3),(1,1),activation='relu'), # 커널7*7 사이즈 -> stride 3,3
    tf.keras.layers.Conv2D(48,(3,3),(1,1),activation='relu'), 
    tf.keras.layers.Conv2D(64,(3,3),(1,1),activation='relu'), # 커널3*3 사이즈 -> stride 1,1
    tf.keras.layers.Conv2D(64,(3,3),activation='relu'),# stride 1,1은 생략해도도 됨
    tf.keras.layers.MaxPooling2D((2,2)),
    tf.keras.layers.Flatten(), #납작하게 해주는 것, 주어진 그림(1164)과 달리 12개가 외부에서 들어감
    tf.keras.layers.Dense(100,activation='relu'),
    tf.keras.layers.Dense(50,activation='relu'),
    tf.keras.layers.Dense(10,activation='softmax')
])

model.summary()

model.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])

model.fit(x_train, y_train, epochs=5)

model.evaluate(x_test, y_test)

 

 

.

 

 

728x90
반응형