-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathmodel.py
93 lines (66 loc) · 3.15 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
91
import tensorflow as tf
import numpy as np
# ------Helper Functions for creating neural networks ---------
def create_conv_2dlayer(input,
num_input_channels,
filter_size,
num_output_channel,
stride=1,
relu=True,
pooling=False,
padding='valid',
data_format='channels_last'): # Number of filters.
layer = tf.layers.conv2d(inputs=input, filters=num_output_channel,
kernel_size=[filter_size, filter_size],
padding=padding,
kernel_initializer=tf.truncated_normal_initializer(stddev=0.05),
bias_initializer=tf.constant_initializer(0.05),
data_format= data_format)
if pooling:
layer = tf.nn.max_pool(value=layer,
ksize=[1, 3, 3, 1],
strides=[1, 1, 1, 1],
padding='VALID')
if relu:
layer = tf.nn.relu(layer)
return layer
def fully_connected_layer(input,
num_inputs,
num_outputs,
activation=None):
weights = tf.get_variable('weights', shape=[num_inputs, num_outputs])
biases = tf.get_variable('biases', shape=num_outputs)
layer = tf.matmul(input, weights) + biases
if activation is not None:
if activation == 'relu':
layer = tf.nn.relu(layer)
elif activation == 'softmax':
layer = tf.nn.softmax(layer)
return layer
def flatten_layer(layer):
layer_shape = layer.get_shape() # layer = [num_images, img_height, img_width, num_channels]
num_features = layer_shape[1:].num_elements() # Total number of elements in the network
layer_flat = tf.reshape(layer, [-1, num_features]) # -1 means total size of dimension is unchanged
return layer_flat, num_features
def create_conv_3dlayer(input,
filter_width,
filter_height,
filter_depth,
stride=1,
num_input_channels=1,
num_output_channels=1,
relu=True):
layer_3d = input
shape = [filter_depth, filter_width, filter_height, num_input_channels, num_output_channels]
weights = tf.get_variable(name='weights', shape=shape, initializer=tf.truncated_normal_initializer(stddev=0.05))
biases = tf.get_variable(name='biases', shape=[num_output_channels], initializer=tf.constant_initializer(0.05))
layer = tf.nn.conv3d(input=layer_3d, filter=weights, strides=[1, stride, 1, 1, 1], padding='VALID') #, data_format='NDHWC'
layer += biases
if relu:
layer = tf.nn.relu(layer)
return layer
########################################################
# ---Configuration for different parallel models-------#
# ---Contain BASS-NET, 3D Conv layers -----------------#
########################################################
# --------Parameter Sharing ----------