Model taken from my traffic signs recognition repo. https://github.com/waleedka/traffic-signs-tensorflow
| 21 | return tf.maximum(0.01 * x, x) |
| 22 | |
| 23 | class TrafficSignsModel(): |
| 24 | """Model taken from my traffic signs recognition repo. |
| 25 | https://github.com/waleedka/traffic-signs-tensorflow |
| 26 | """ |
| 27 | def conv(self, input, num_outputs, name=None): |
| 28 | return layers.convolution2d( |
| 29 | input, num_outputs=num_outputs, kernel_size=(5, 5), stride=(1, 1), |
| 30 | padding="SAME", activation_fn=lrelu, |
| 31 | normalizer_fn=layers.batch_norm |
| 32 | ) |
| 33 | |
| 34 | def pool(self, input): |
| 35 | return layers.max_pool2d(input, kernel_size=(2, 2), |
| 36 | stride=(2, 2), padding="SAME") |
| 37 | |
| 38 | def __init__(self): |
| 39 | self.graph = tf.Graph() |
| 40 | with self.graph.as_default(): |
| 41 | # Global step counter |
| 42 | self.global_step = tf.Variable(0, trainable=False, name='global_step') |
| 43 | # Placeholders |
| 44 | self.images = tf.placeholder(tf.float32, [None, 32, 32, 3], name="images") |
| 45 | self.labels = tf.placeholder(tf.int32, [None], name="labels") |
| 46 | # Layers |
| 47 | self.conv1 = self.conv(self.images, 8) |
| 48 | self.pool1 = self.pool(self.conv1) |
| 49 | self.conv2 = self.conv(self.pool1, 12) |
| 50 | self.pool2 = self.pool(self.conv2) |
| 51 | self.conv3 = self.conv(self.pool2, 16) |
| 52 | self.pool3 = self.pool(self.conv3) |
| 53 | self.flat = layers.flatten(self.pool3) |
| 54 | # TODO self.h1 = layers.fully_connected(self.flat, 200, lrelu) |
| 55 | self.logits = layers.fully_connected(self.flat, 62, lrelu) |
| 56 | # Convert one-hot vector to label index (int). |
| 57 | self.predicted_labels = tf.argmax(self.logits, 1) |
| 58 | # Loss |
| 59 | self.loss = tf.reduce_mean(tf.nn.sparse_softmax_cross_entropy_with_logits( |
| 60 | logits=self.logits, labels=self.labels, name="test_name")) |
| 61 | # Training Ops |
| 62 | self.train = tf.train.AdamOptimizer(learning_rate=0.001)\ |
| 63 | .minimize(self.loss, global_step=self.global_step) |
| 64 | self.init = tf.global_variables_initializer() |
| 65 | # Create session |
| 66 | self.session = tf.Session() |
| 67 | # Run initialization op |
| 68 | self.session.run(self.init) |
| 69 | |
| 70 | |
| 71 | class TestTensorFlow(unittest.TestCase): |