Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def GlobalConcatPooling(name=''):
""" Global Concat Pooling: concatenation of both Max and Ave Pooling
In any situation where max pooling or ave pooling is appropriate, concat pooling
would a drop-in replacement that will provide a performance boost.
"""
pool1 = C.layers.GlobalMaxPooling()
pool2 = C.layers.GlobalAveragePooling()
@C.BlockFunction('GlobalConcatPooling', name)
def inner(x):
return C.splice(C.squeeze(pool1(x)), C.squeeze(pool2(x)), axis=0)
return inner
cc_ph = C.placeholder()
qgw_ph = C.placeholder()
qnw_ph = C.placeholder()
qc_ph = C.placeholder()
input_chars = C.placeholder(shape=(1,self.word_size,self.c_dim))
input_glove_words = C.placeholder(shape=(self.wg_dim,))
input_nonglove_words = C.placeholder(shape=(self.wn_dim,))
embedded = C.splice(
C.reshape(self.charcnn(input_chars), self.convs),
self.embed()(input_glove_words, input_nonglove_words), name='splice_embed')
highway = HighwayNetwork(dim=self.elmo_dim + self.hidden_dim + self.convs,
highway_layers=self.highway_layers)(embedded)
highway_drop = C.layers.Dropout(self.dropout)(highway)
processed = OptimizedRnnStack(self.hidden_dim,
num_layers=1,
bidirectional=True,
use_cudnn=self.use_cudnn,
name='input_rnn')(highway_drop)
qce = C.one_hot(qc_ph, num_classes=self.c_dim, sparse_output=self.use_sparse)
cce = C.one_hot(cc_ph, num_classes=self.c_dim, sparse_output=self.use_sparse)
q_processed = processed.clone(C.CloneMethod.share,
{input_chars:qce, input_glove_words:qgw_ph, input_nonglove_words:qnw_ph})
c_processed = processed.clone(C.CloneMethod.share,
{input_chars:cce, input_glove_words:cgw_ph, input_nonglove_words:cnw_ph})
return C.as_block(
C.combine([c_processed, q_processed]),
def func(x):
return C.splice(
C.layers.Recurrence(C.layers.LSTM(hidden_dim))(x),
C.layers.Recurrence(C.layers.LSTM(hidden_dim), go_backwards=True)(x),
name=name)
return func
def D(x_img, x_code):
'''
Detector network architecture
Args:
x_img: cntk.input_variable represent images to network
x_code: cntk.input_variable represent conditional code to network
'''
def bn_with_leaky_relu(x, leak=0.2):
h = C.layers.BatchNormalization(map_rank=1)(x)
r = C.param_relu(C.constant((np.ones(h.shape) * leak).astype(np.float32)), h)
return r
with C.layers.default_options(init=C.normal(scale=0.02)):
h0 = C.layers.Convolution2D(dkernel, 1, strides=dstride)(x_img)
h0 = bn_with_leaky_relu(h0, leak=0.2)
print('h0 shape :', h0.shape)
h1 = C.layers.Convolution2D(dkernel, 64, strides=dstride)(h0)
h1 = bn_with_leaky_relu(h1, leak=0.2)
print('h1 shape :', h1.shape)
h2 = C.layers.Dense(256, activation=None)(h1)
h2 = bn_with_leaky_relu(h2, leak=0.2)
print('h2 shape :', h2.shape)
h2_aug = C.splice(h2, x_code)
h3 = C.layers.Dense(256, activation=C.relu)(h2_aug)
def create_model(features):
'''
This function creates the architecture model.
:param features: The input features.
:return: The output of the network which its dimentionality is num_classes.
'''
with C.layers.default_options(init = C.layers.glorot_uniform(), activation = C.ops.relu):
# Features are the initial values.
hidden_out = features
# Creating some identical hidden layers.
for _ in range(num_hidden_layers):
hidden_out = C.layers.Dense(hidden_layer_neurons)(hidden_out)
# Last layer connected to Softmax.
network_output = C.layers.Dense(num_classes, activation = None)(hidden_out)
return network_output
cntk.models.For(range(2), lambda i: [
cntk.layers.Dense([256,128][i]),
cntk.layers.Dropout(0.5)
]),
# Input variables denoting the features and label data
input_var = cntk.ops.input((num_channels, image_height, image_width), np.float32)
label_var = cntk.ops.input(num_output_classes, np.float32)
# Instantiate the feedforward classification model
scaled_input = cntk.ops.element_times(cntk.ops.constant(0.00390625), input_var)
with cntk.layers.default_options(activation=cntk.ops.relu, pad=False):
conv1 = cntk.layers.Convolution2D((5,5), 32, pad=True)(scaled_input)
pool1 = cntk.layers.MaxPooling((3,3), (2,2))(conv1)
conv2 = cntk.layers.Convolution2D((3,3), 48)(pool1)
pool2 = cntk.layers.MaxPooling((3,3), (2,2))(conv2)
conv3 = cntk.layers.Convolution2D((3,3), 64)(pool2)
f4 = cntk.layers.Dense(96)(conv3)
drop4 = cntk.layers.Dropout(0.5)(f4)
z = cntk.layers.Dense(num_output_classes, activation=None)(drop4)
ce = cntk.losses.cross_entropy_with_softmax(z, label_var)
pe = cntk.metrics.classification_error(z, label_var)
reader_train = create_reader(os.path.join(data_path, 'Train-28x28_cntk_text.txt'), True, input_dim, num_output_classes)
# Training config
epoch_size = 60000 # For now we manually specify epoch size
minibatch_size = 64
max_epochs = 40
# Set learning parameters
lr_per_sample = [0.001]*10 + [0.0005]*10 + [0.0001]
lr_schedule = cntk.learning_rate_schedule(lr_per_sample, cntk.learners.UnitType.sample, epoch_size)
mm_time_constant = [0]*5 + [1024]
def create_model(features):
'''
This function creates the architecture model.
:param features: The input features.
:return: The output of the network which its dimentionality is num_classes.
'''
with C.layers.default_options(init = C.layers.glorot_uniform(), activation = C.ops.relu):
# Features are the initial values.
hidden_out = features
# Creating some convolutional layers
hidden_out = C.layers.Convolution2D(filter_shape=(3, 3),
num_filters=16,
strides=(2, 2),
pad=True, name='first_conv')(hidden_out)
hidden_out = C.layers.Convolution2D(filter_shape=(5, 5),
num_filters=64,
strides=(2, 2),
pad=True, name='second_conv')(hidden_out)
# Last layer connected to Softmax.
network_output = C.layers.Dense(num_classes, activation=None, name='classify')(hidden_out)
# seq[tensor[2d]]
swap_qvw = C.swapaxes(qvw)
cq = C.reshape(C.reduce_sum(A * C.sequence.broadcast_as(swap_qvw, A), axis=1), (-1))
# seq[tensor[4d]]
uc_concat = C.splice(p_processed, cq, p_processed * cq, cq * cq)
# seq[tensor[4d]]
gt = C.tanh(C.times(uc_concat, wg))
# seq[tensor[4d]]
uc_concat_star = gt * uc_concat
# seq[tensor[4d]]
vp = C.layers.Sequential([
C.layers.Dropout(self.dropout),
OptimizedRnnStack(self.hidden_dim, bidirectional=True,
use_cudnn=self.use_cudnn, name=layer+'_attention_rnn')])(uc_concat_star)
return C.as_block(
vp,
[(p_processed, context), (q_processed, query)],
'attention_layer',
'attention_layer')
def deconv_mnist(max_epochs=3):
image_height = 28
image_width = 28
num_channels = 1
input_dim = image_height * image_width * num_channels
num_output_classes = 10
# Input variable and normalization
input_var = C.ops.input_variable((num_channels, image_height, image_width), np.float32)
scaled_input = C.ops.element_times(C.ops.constant(0.00390625), input_var, name="input_node")
# Define the auto encoder model
cMap = 1
conv1 = C.layers.Convolution2D ((5,5), cMap, pad=True, activation=C.ops.relu)(scaled_input)
pool1 = C.layers.MaxPooling ((4,4), (4,4), name="pooling_node")(conv1)
unpool1 = C.layers.MaxUnpooling ((4,4), (4,4))(pool1, conv1)
z = C.layers.ConvolutionTranspose2D((5,5), num_channels, pad=True, bias=False, init=C.glorot_uniform(0.001), name="output_node")(unpool1)
# define rmse loss function (should be 'err = C.ops.minus(deconv1, scaled_input)')
f2 = C.ops.element_times(C.ops.constant(0.00390625), input_var)
err = C.ops.reshape(C.ops.minus(z, f2), (784))
sq_err = C.ops.element_times(err, err)
mse = C.ops.reduce_mean(sq_err)
rmse_loss = C.ops.sqrt(mse)
rmse_eval = C.ops.sqrt(mse)
reader_train = create_reader(os.path.join(data_path, 'Train-28x28_cntk_text.txt'), True, input_dim, num_output_classes)
# training config
epoch_size = 60000
minibatch_size = 64