-
Notifications
You must be signed in to change notification settings - Fork 26
Expand file tree
/
Copy pathmodel.py
More file actions
71 lines (44 loc) · 1.69 KB
/
model.py
File metadata and controls
71 lines (44 loc) · 1.69 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
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
#-*- coding: UTF-8 -*-
# Author xuli.shen
import tensorflow as tf
def new_weights(name,shape):
return tf.get_variable(name ,shape, initializer=tf.contrib.layers.xavier_initializer())
def new_biases(length):
return tf.Variable(tf.constant(0.01, shape=[length]))
def new_fc_layer(name,
input,
num_inputs,
num_outputs,
use_relu=True):
weights = new_weights(name,shape=[num_inputs, num_outputs])
biases = new_biases(length=num_outputs)
layer = tf.matmul(input, weights) + biases
if use_relu:
layer = tf.nn.relu(layer)
return layer, weights
def new_conv_layer(name,
input,
num_input_channels,
filter_size,
num_filters,
use_pooling=True):
shape = [filter_size, filter_size, num_input_channels, num_filters]
weights = new_weights(name,shape=shape)
biases = new_biases(length=num_filters)
layer = tf.nn.conv2d(input=input,
filter=weights,
strides=[1, 1, 1, 1],
padding='SAME')
layer += biases
if use_pooling:
layer = tf.nn.max_pool(value=layer,
ksize=[1, 2, 2, 1],
strides=[1, 2, 2, 1],
padding='SAME')
layer = tf.nn.relu(layer)
return layer, weights
def flatten_layer(layer):
layer_shape = layer.get_shape()
num_features = layer_shape[1:4].num_elements()
layer_flat = tf.reshape(layer, [-1, num_features])
return layer_flat, num_features