-
Notifications
You must be signed in to change notification settings - Fork 0
/
model.py
90 lines (74 loc) · 2.69 KB
/
model.py
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
import tensorflow as tf
import params
print_layer = True
x = tf.placeholder(tf.float32, shape=[None, params.network_height, params.img_width, params.img_channels])
y_ = tf.placeholder(tf.float32, shape=[None, 1])
keep_prob = tf.placeholder(tf.float32)
x_image = tf.reshape(x, [-1, params.network_height, params.img_width, params.img_channels])
# Conv Layer # 1
network = tf.layers.conv2d(x_image, filters=64, kernel_size = (7,7), strides=(2,2),
padding='same', activation=tf.nn.relu, use_bias=False,name="conv_1")
if print_layer:
print(network)
network = tf.layers.max_pooling2d(network, pool_size=(3,3), strides=2, padding='same',
name="m_pooling_1")
if print_layer:
print(network)
network = tf.layers.batch_normalization(network, name="norm_1")
if print_layer:
print(network)
# Conv Layer #2
network = tf.layers.conv2d(network, filters=128, kernel_size = (5,5), strides=(1,1),
padding='same', activation=tf.nn.relu, use_bias=False,name="conv_2")
if print_layer:
print(network)
network = tf.layers.max_pooling2d(network, pool_size=(3,3), strides=2, padding='same',
name="m_pooling_2")
if print_layer:
print(network)
network = tf.layers.batch_normalization(network, name="norm_2")
if print_layer:
print(network)
# Conv Layer #3
network = tf.layers.conv2d(network, filters=256, kernel_size = (3,3), strides=(1,1),
padding='same', activation=tf.nn.relu, use_bias=True,name="conv_3_1")
if print_layer:
print(network)
network = tf.layers.conv2d(network, filters=256, kernel_size = (3,3), strides=(1,1),
padding='same', activation=tf.nn.relu, use_bias=True,name="conv_3_2")
if print_layer:
print(network)
network = tf.layers.conv2d(network, filters=16, kernel_size = (3,3), strides=(1,1),
padding='same', activation=tf.nn.relu, use_bias=False,name="conv_3_3")
if print_layer:
print(network)
network = tf.layers.max_pooling2d(network, pool_size=(3,3), strides=2, padding='same',
name="m_pooling_3")
if print_layer:
print(network)
network = tf.layers.batch_normalization(network, name="norm_3")
if print_layer:
print(network)
# Flatten
network = tf.reshape(network, [-1, 1280], name="flatten")
if print_layer:
print(network)
# Dense Layer 1
network = tf.layers.dense(network, 4096, activation=tf.nn.relu, name="dense_1")
if print_layer:
print(network)
network = tf.layers.dropout(network, rate=keep_prob, name="dropout_1")
if print_layer:
print(network)
# Dense Layer 2
network = tf.layers.dense(network, 4096, activation=tf.nn.relu, name="dense_2")
if print_layer:
print(network)
network = tf.layers.dropout(network, rate=keep_prob, name="dropout_2")
if print_layer:
print(network)
# output layer
# activation=None => linear
y = tf.layers.dense(network, 1, activation=None, name="output")
if print_layer:
print(y)