-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathConvolution
More file actions
45 lines (37 loc) · 1.8 KB
/
Convolution
File metadata and controls
45 lines (37 loc) · 1.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
import tensorflow as tf
import matplotlib.pyplot as plt
from tensorflow.keras import models
mnist = tf.keras.datasets.fashion_mnist
(training_images, training_labels), (test_images, test_labels) = mnist.load_data()
training_images=training_images.reshape(60000, 28, 28, 1)
training_images=training_images / 255.0
test_images = test_images.reshape(10000, 28, 28, 1)
test_images=test_images/255.0
model = tf.keras.models.Sequential([
tf.keras.layers.Conv2D(64, (3,3), activation='relu', input_shape=(28, 28, 1)),
tf.keras.layers.MaxPooling2D(2, 2),
tf.keras.layers.Conv2D(64, (3,3), activation='relu'),
tf.keras.layers.MaxPooling2D(2,2),
tf.keras.layers.Flatten(),
tf.keras.layers.Dense(128, activation='relu'),
tf.keras.layers.Dense(10, activation='softmax')
])
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
model.summary()
model.fit(training_images, training_labels, epochs=5)
test_loss = model.evaluate(test_images, test_labels)
f, axarr = plt.subplots(3,5)
layer_outputs = [layer.output for layer in model.layers] # 아마 레이어 각각 output 반환..
activation_model = tf.keras.models.Model(inputs = model.input, outputs =layer_outputs)
for x in range(0,4): #4개의 레이어 통과할 때마다의 변화를 관찰
f1 = activation_model.predict(test_images[0].reshape(1,28,28,1))[x] # 첫번째 테스트 이미지가 변환돼서 들어간다,
# 리턴은 4번의 레이어 통과에 따른 output 이미지
axarr[0,x].imshow(f1[0,:,:,1])
f2 = activation_model.predict(test_images[3].reshape(1,28,28,1))[x]
axarr[1,x].imshow(f2[0,:,:,1])
f3 = activation_model.predict(test_images[6].reshape(1,28,28,1))[x]
axarr[2,x].imshow(f3[0,:,:,1])
axarr[0,4].imshow(test_images[0])
axarr[1,4].imshow(test_images[3])
axarr[2,4].imshow(test_images[6])
plt.show()