def cnn(self,
model_input,
l2_penalty=1e-8,
num_filters=[1024, 1024, 1024],
filter_sizes=[1,2,3],
sub_scope="",
**unused_params):
max_frames = model_input.get_shape().as_list()[1]
num_features = model_input.get_shape().as_list()[2]
shift_inputs = []
for i in range(max(filter_sizes)):
if i == 0:
shift_inputs.append(model_input)
else:
shift_inputs.append(tf.pad(model_input, paddings=[[0,0],[i,0],[0,0]])[:,:max_frames,:])
cnn_outputs = []
for nf, fs in zip(num_filters, filter_sizes):
sub_input = tf.concat(shift_inputs[:fs], axis=2)
sub_filter = tf.get_variable(sub_scope+"cnn-filter-len%d"%fs,
shape=[num_features*fs, nf], dtype=tf.float32,
initializer=tf.truncated_normal_initializer(mean=0.0, stddev=0.1),
regularizer=tf.contrib.layers.l2_regularizer(l2_penalty))
cnn_outputs.append(tf.einsum("ijk,kl->ijl", sub_input, sub_filter))
cnn_output = tf.concat(cnn_outputs, axis=2)
return cnn_output, max_frames
python类einsum()的实例源码
def cnn(self,
model_input,
l2_penalty=1e-8,
num_filters = [1024, 1024, 1024],
filter_sizes = [1,2,3],
sub_scope="",
**unused_params):
max_frames = model_input.get_shape().as_list()[1]
num_features = model_input.get_shape().as_list()[2]
shift_inputs = []
for i in xrange(max(filter_sizes)):
if i == 0:
shift_inputs.append(model_input)
else:
shift_inputs.append(tf.pad(model_input, paddings=[[0,0],[i,0],[0,0]])[:,:max_frames,:])
cnn_outputs = []
for nf, fs in zip(num_filters, filter_sizes):
sub_input = tf.concat(shift_inputs[:fs], axis=2)
sub_filter = tf.get_variable(sub_scope+"cnn-filter-len%d"%fs,
shape=[num_features*fs, nf], dtype=tf.float32,
initializer=tf.truncated_normal_initializer(mean=0.0, stddev=0.1),
regularizer=tf.contrib.layers.l2_regularizer(l2_penalty))
cnn_outputs.append(tf.einsum("ijk,kl->ijl", sub_input, sub_filter))
cnn_output = tf.concat(cnn_outputs, axis=2)
return cnn_output
positional_cnn_deep_combine_chain_model.py 文件源码
项目:youtube-8m
作者: wangheda
项目源码
文件源码
阅读 25
收藏 0
点赞 0
评论 0
def cnn(self,
model_input,
l2_penalty=1e-8,
num_filters = [1024, 1024, 1024],
filter_sizes = [1,2,3],
sub_scope="",
**unused_params):
max_frames = model_input.get_shape().as_list()[1]
num_features = model_input.get_shape().as_list()[2]
shift_inputs = []
for i in xrange(max(filter_sizes)):
if i == 0:
shift_inputs.append(model_input)
else:
shift_inputs.append(tf.pad(model_input, paddings=[[0,0],[i,0],[0,0]])[:,:max_frames,:])
cnn_outputs = []
for nf, fs in zip(num_filters, filter_sizes):
sub_input = tf.concat(shift_inputs[:fs], axis=2)
sub_filter = tf.get_variable(sub_scope+"cnn-filter-len%d"%fs,
shape=[num_features*fs, nf], dtype=tf.float32,
initializer=tf.truncated_normal_initializer(mean=0.0, stddev=0.1),
regularizer=tf.contrib.layers.l2_regularizer(l2_penalty))
cnn_outputs.append(tf.einsum("ijk,kl->ijl", sub_input, sub_filter))
cnn_output = tf.concat(cnn_outputs, axis=2)
return cnn_output
positional_cnn_deep_combine_chain_model.py 文件源码
项目:youtube-8m
作者: wangheda
项目源码
文件源码
阅读 27
收藏 0
点赞 0
评论 0
def add_positional_embedding(self, model_input, num_frames, l2_penalty=1e-8):
batch_size, max_frames, num_features = model_input.get_shape().as_list()
positional_embedding = tf.get_variable("positional_embedding", dtype=tf.float32,
shape=[1, max_frames, num_features],
initializer=tf.zeros_initializer(),
regularizer=tf.contrib.layers.l2_regularizer(l2_penalty))
mask = tf.sequence_mask(lengths=num_frames, maxlen=max_frames, dtype=tf.float32)
model_input_with_positional_embedding = tf.einsum("ijk,ij->ijk", model_input + positional_embedding, mask)
return model_input_with_positional_embedding
def cnn(self,
model_input,
l2_penalty=1e-8,
num_filters = [1024, 1024, 1024],
filter_sizes = [1,2,3],
sub_scope="",
**unused_params):
max_frames = model_input.get_shape().as_list()[1]
num_features = model_input.get_shape().as_list()[2]
shift_inputs = []
for i in xrange(max(filter_sizes)):
if i == 0:
shift_inputs.append(model_input)
else:
shift_inputs.append(tf.pad(model_input, paddings=[[0,0],[i,0],[0,0]])[:,:max_frames,:])
cnn_outputs = []
for nf, fs in zip(num_filters, filter_sizes):
sub_input = tf.concat(shift_inputs[:fs], axis=2)
sub_filter = tf.get_variable(sub_scope+"cnn-filter-len%d"%fs,
shape=[num_features*fs, nf], dtype=tf.float32,
initializer=tf.truncated_normal_initializer(mean=0.0, stddev=0.1),
regularizer=tf.contrib.layers.l2_regularizer(l2_penalty))
cnn_outputs.append(tf.einsum("ijk,kl->ijl", sub_input, sub_filter))
cnn_output = tf.concat(cnn_outputs, axis=2)
cnn_output = slim.batch_norm(
cnn_output,
center=True,
scale=True,
is_training=FLAGS.is_training,
scope=sub_scope+"cluster_bn")
return cnn_output
def matching_matrix(self,
model_input,
vocab_size,
l2_penalty=1e-8,
**unused_params):
max_frames = model_input.get_shape().as_list()[1]
num_features = model_input.get_shape().as_list()[2]
embedding_size = FLAGS.mm_label_embedding
model_input = tf.reshape(model_input, [-1, num_features])
frame_relu = slim.fully_connected(
model_input,
embedding_size,
activation_fn=tf.nn.relu,
biases_initializer=None,
weights_regularizer=slim.l2_regularizer(l2_penalty),
scope="mm_relu")
frame_activation = slim.fully_connected(
frame_relu,
embedding_size,
activation_fn=tf.nn.tanh,
biases_initializer=None,
weights_regularizer=slim.l2_regularizer(l2_penalty),
scope="mm_activation")
label_embedding = tf.get_variable("label_embedding", shape=[vocab_size,embedding_size],
dtype=tf.float32, initializer=tf.truncated_normal_initializer(mean=0.0, stddev=0.5),
regularizer=slim.l2_regularizer(l2_penalty), trainable=True)
mm_matrix = tf.einsum("ik,jk->ij", frame_activation, label_embedding)
mm_output = tf.reshape(mm_matrix, [-1,max_frames,vocab_size])
return mm_output
lstm_positional_attention_max_pooling_model.py 文件源码
项目:youtube-8m
作者: wangheda
项目源码
文件源码
阅读 28
收藏 0
点赞 0
评论 0
def get_mean_input(self, model_input, num_frames):
batch_size, max_frames, num_features = model_input.get_shape().as_list()
mask = tf.sequence_mask(lengths=num_frames, maxlen=max_frames, dtype=tf.float32)
mean_input = tf.einsum("ijk,ij->ik", model_input, mask) / tf.expand_dims(tf.cast(num_frames, dtype=tf.float32), dim=1)
tiled_mean_input = tf.tile(tf.expand_dims(mean_input, dim=1), multiples=[1,max_frames,1])
return tiled_mean_input
def cnn(self,
model_input,
l2_penalty=1e-8,
num_filters = [1024, 1024, 1024],
filter_sizes = [1,2,3],
**unused_params):
max_frames = model_input.get_shape().as_list()[1]
num_features = model_input.get_shape().as_list()[2]
shift_inputs = []
for i in xrange(max(filter_sizes)):
if i == 0:
shift_inputs.append(model_input)
else:
shift_inputs.append(tf.pad(model_input, paddings=[[0,0],[i,0],[0,0]])[:,:max_frames,:])
cnn_outputs = []
for nf, fs in zip(num_filters, filter_sizes):
sub_input = tf.concat(shift_inputs[:fs], axis=2)
sub_filter = tf.get_variable("cnn-filter-len%d"%fs, shape=[num_features*fs, nf], dtype=tf.float32,
initializer=tf.truncated_normal_initializer(mean=0.0, stddev=0.1),
regularizer=tf.contrib.layers.l2_regularizer(l2_penalty))
cnn_outputs.append(tf.einsum("ijk,kl->ijl", sub_input, sub_filter))
cnn_output = tf.concat(cnn_outputs, axis=2)
return cnn_output
multi_view_cnn_deep_combine_chain_model.py 文件源码
项目:youtube-8m
作者: wangheda
项目源码
文件源码
阅读 23
收藏 0
点赞 0
评论 0
def cnn(self,
model_input,
l2_penalty=1e-8,
num_filters = [1024, 1024, 1024],
filter_sizes = [1,2,3],
sub_scope="",
**unused_params):
max_frames = model_input.get_shape().as_list()[1]
num_features = model_input.get_shape().as_list()[2]
shift_inputs = []
for i in xrange(max(filter_sizes)):
if i == 0:
shift_inputs.append(model_input)
else:
shift_inputs.append(tf.pad(model_input, paddings=[[0,0],[i,0],[0,0]])[:,:max_frames,:])
cnn_outputs = []
for nf, fs in zip(num_filters, filter_sizes):
sub_input = tf.concat(shift_inputs[:fs], axis=2)
sub_filter = tf.get_variable(sub_scope+"cnn-filter-len%d"%fs,
shape=[num_features*fs, nf], dtype=tf.float32,
initializer=tf.truncated_normal_initializer(mean=0.0, stddev=0.1),
regularizer=tf.contrib.layers.l2_regularizer(l2_penalty))
cnn_outputs.append(tf.einsum("ijk,kl->ijl", sub_input, sub_filter))
cnn_output = tf.concat(cnn_outputs, axis=2)
return cnn_output
distillchain_cnn_deep_combine_chain_model.py 文件源码
项目:youtube-8m
作者: wangheda
项目源码
文件源码
阅读 25
收藏 0
点赞 0
评论 0
def cnn(self,
model_input,
l2_penalty=1e-8,
num_filters = [1024, 1024, 1024],
filter_sizes = [1,2,3],
sub_scope="",
**unused_params):
max_frames = model_input.get_shape().as_list()[1]
num_features = model_input.get_shape().as_list()[2]
shift_inputs = []
for i in xrange(max(filter_sizes)):
if i == 0:
shift_inputs.append(model_input)
else:
shift_inputs.append(tf.pad(model_input, paddings=[[0,0],[i,0],[0,0]])[:,:max_frames,:])
cnn_outputs = []
for nf, fs in zip(num_filters, filter_sizes):
sub_input = tf.concat(shift_inputs[:fs], axis=2)
sub_filter = tf.get_variable(sub_scope+"cnn-filter-len%d"%fs,
shape=[num_features*fs, nf], dtype=tf.float32,
initializer=tf.truncated_normal_initializer(mean=0.0, stddev=0.1),
regularizer=tf.contrib.layers.l2_regularizer(l2_penalty))
cnn_outputs.append(tf.einsum("ijk,kl->ijl", sub_input, sub_filter))
cnn_output = tf.concat(cnn_outputs, axis=2)
return cnn_output
def cnn(self,
model_input,
l2_penalty=1e-8,
num_filters = [1024, 1024, 1024],
filter_sizes = [1,2,3],
**unused_params):
max_frames = model_input.get_shape().as_list()[1]
num_features = model_input.get_shape().as_list()[2]
shift_inputs = []
for i in xrange(max(filter_sizes)):
if i == 0:
shift_inputs.append(model_input)
else:
shift_inputs.append(tf.pad(model_input, paddings=[[0,0],[i,0],[0,0]])[:,:max_frames,:])
cnn_outputs = []
for nf, fs in zip(num_filters, filter_sizes):
sub_input = tf.concat(shift_inputs[:fs], axis=2)
sub_filter = tf.get_variable("cnn-filter-len%d"%fs, shape=[num_features*fs, nf], dtype=tf.float32,
initializer=tf.truncated_normal_initializer(mean=0.0, stddev=0.1),
regularizer=tf.contrib.layers.l2_regularizer(l2_penalty))
cnn_outputs.append(tf.einsum("ijk,kl->ijl", sub_input, sub_filter))
cnn_output = tf.concat(cnn_outputs, axis=2)
return cnn_output
def cnn(self,
model_input,
l2_penalty=1e-8,
num_filters = [1024, 1024, 1024],
filter_sizes = [1,2,3],
sub_scope="",
**unused_params):
max_frames = model_input.get_shape().as_list()[1]
num_features = model_input.get_shape().as_list()[2]
shift_inputs = []
for i in xrange(max(filter_sizes)):
if i == 0:
shift_inputs.append(model_input)
else:
shift_inputs.append(tf.pad(model_input, paddings=[[0,0],[i,0],[0,0]])[:,:max_frames,:])
cnn_outputs = []
for nf, fs in zip(num_filters, filter_sizes):
sub_input = tf.concat(shift_inputs[:fs], axis=2)
sub_filter = tf.get_variable(sub_scope+"cnn-filter-len%d"%fs,
shape=[num_features*fs, nf], dtype=tf.float32,
initializer=tf.truncated_normal_initializer(mean=0.0, stddev=0.1),
regularizer=tf.contrib.layers.l2_regularizer(l2_penalty))
cnn_outputs.append(tf.einsum("ijk,kl->ijl", sub_input, sub_filter))
cnn_output = tf.concat(cnn_outputs, axis=2)
return cnn_output
cnn_lstm_memory_normalization_model.py 文件源码
项目:youtube-8m
作者: wangheda
项目源码
文件源码
阅读 26
收藏 0
点赞 0
评论 0
def cnn(self,
model_input,
l2_penalty=1e-8,
num_filters = [1024, 1024, 1024],
filter_sizes = [1,2,3],
**unused_params):
max_frames = model_input.get_shape().as_list()[1]
num_features = model_input.get_shape().as_list()[2]
normalize_class = getattr(self, FLAGS.lstm_normalization, self.identical)
shift_inputs = []
for i in xrange(max(filter_sizes)):
if i == 0:
shift_inputs.append(model_input)
else:
shift_inputs.append(tf.pad(model_input, paddings=[[0,0],[i,0],[0,0]])[:,:max_frames,:])
cnn_outputs = []
for nf, fs in zip(num_filters, filter_sizes):
sub_input = tf.concat(shift_inputs[:fs], axis=2)
sub_filter = tf.get_variable("cnn-filter-len%d"%fs, shape=[num_features*fs, nf], dtype=tf.float32,
initializer=tf.truncated_normal_initializer(mean=0.0, stddev=0.1),
regularizer=tf.contrib.layers.l2_regularizer(l2_penalty))
cnn_outputs.append(tf.einsum("ijk,kl->ijl", sub_input, sub_filter))
cnn_output = tf.concat(cnn_outputs, axis=2)
return cnn_output
def frame_mean(self, model_input, frame_start,
frame_end, **unused_params):
max_frames = model_input.shape.as_list()[-2]
frame_start = tf.cast(frame_start, tf.int32)
frame_end = tf.cast(frame_end, tf.int32)
frame_length = tf.expand_dims(tf.cast(frame_end - frame_start, tf.float32), axis=1)
frame_mask = tf.sequence_mask(frame_end, maxlen=max_frames, dtype=tf.float32) \
- tf.sequence_mask(frame_start, maxlen=max_frames, dtype=tf.float32)
mean_frame = tf.einsum("ijk,ij->ik", model_input, frame_mask) / (0.1 + frame_length)
return mean_frame
distillchain_lstm_cnn_deep_combine_chain_model.py 文件源码
项目:youtube-8m
作者: wangheda
项目源码
文件源码
阅读 26
收藏 0
点赞 0
评论 0
def cnn(self,
model_input,
l2_penalty=1e-8,
num_filters = [1024, 1024, 1024],
filter_sizes = [1,2,3],
sub_scope="",
**unused_params):
max_frames = model_input.get_shape().as_list()[1]
num_features = model_input.get_shape().as_list()[2]
shift_inputs = []
for i in xrange(max(filter_sizes)):
if i == 0:
shift_inputs.append(model_input)
else:
shift_inputs.append(tf.pad(model_input, paddings=[[0,0],[i,0],[0,0]])[:,:max_frames,:])
cnn_outputs = []
for nf, fs in zip(num_filters, filter_sizes):
sub_input = tf.concat(shift_inputs[:fs], axis=2)
sub_filter = tf.get_variable(sub_scope+"cnn-filter-len%d"%fs,
shape=[num_features*fs, nf], dtype=tf.float32,
initializer=tf.truncated_normal_initializer(mean=0.0, stddev=0.1),
regularizer=tf.contrib.layers.l2_regularizer(l2_penalty))
cnn_outputs.append(tf.einsum("ijk,kl->ijl", sub_input, sub_filter))
cnn_output = tf.concat(cnn_outputs, axis=2)
return cnn_output
distillchain_multiscale_cnn_lstm_model.py 文件源码
项目:youtube-8m
作者: wangheda
项目源码
文件源码
阅读 19
收藏 0
点赞 0
评论 0
def cnn(self,
model_input,
l2_penalty=1e-8,
num_filters = [1024, 1024, 1024],
filter_sizes = [1,2,3],
sub_scope="",
**unused_params):
max_frames = model_input.get_shape().as_list()[1]
num_features = model_input.get_shape().as_list()[2]
shift_inputs = []
for i in xrange(max(filter_sizes)):
if i == 0:
shift_inputs.append(model_input)
else:
shift_inputs.append(tf.pad(model_input, paddings=[[0,0],[i,0],[0,0]])[:,:max_frames,:])
cnn_outputs = []
for nf, fs in zip(num_filters, filter_sizes):
sub_input = tf.concat(shift_inputs[:fs], axis=2)
sub_filter = tf.get_variable(sub_scope+"cnn-filter-len%d"%fs,
shape=[num_features*fs, nf], dtype=tf.float32,
initializer=tf.truncated_normal_initializer(mean=0.0, stddev=0.1),
regularizer=tf.contrib.layers.l2_regularizer(l2_penalty))
cnn_outputs.append(tf.einsum("ijk,kl->ijl", sub_input, sub_filter))
cnn_output = tf.concat(cnn_outputs, axis=2)
cnn_output = slim.batch_norm(
cnn_output,
center=True,
scale=True,
is_training=FLAGS.is_training,
scope=sub_scope+"cluster_bn")
return cnn_output
def avg(self, model_input_raw, num_frames, mask):
max_frames = model_input_raw.get_shape().as_list()[1]
num_frames_matrix = tf.maximum(tf.cast(
tf.expand_dims(num_frames, axis=1),
dtype=tf.float32), 1.0)
mean_matrix = mask / num_frames_matrix
mean_input = tf.einsum("ijk,ij->ik", model_input_raw, mean_matrix)
mean_input_tile = tf.tile(tf.expand_dims(mean_input, axis=1), multiples=[1,max_frames,1])
return mean_input_tile
def std(self, model_input_raw, num_frames, mask):
mean_input = self.avg(model_input_raw, num_frames, mask)
error = tf.einsum("ijk,ij->ijk", model_input_raw - mean_input, mask)
return error
def create_model(self,
model_input,
vocab_size,
num_mixtures=None,
l2_penalty=1e-8,
sub_scope="",
original_input=None,
**unused_params):
num_relu = FLAGS.attention_relu_cells
num_methods = model_input.get_shape().as_list()[-1]
num_features = model_input.get_shape().as_list()[-2]
original_input = tf.nn.l2_normalize(original_input, dim=1)
model_input_list = tf.unstack(model_input, axis=2)
relu_units = [self.relu(original_input, num_relu, sub_scope="input")]
i = 0
for mi in model_input_list:
relu_units.append(self.relu(mi, num_relu, sub_scope="sub"+str(i)))
i += 1
gate_activations = slim.fully_connected(
tf.concat(relu_units, axis=1),
num_methods,
activation_fn=None,
biases_initializer=None,
weights_regularizer=slim.l2_regularizer(l2_penalty),
scope="gate")
gate = tf.nn.softmax(gate_activations)
output = tf.einsum("ijk,ik->ij", model_input, gate)
return {"predictions": output}
def create_model(self,
model_input,
vocab_size,
num_mixtures=None,
l2_penalty=1e-8,
sub_scope="",
original_input=None,
**unused_params):
num_methods = model_input.get_shape().as_list()[-1]
num_features = model_input.get_shape().as_list()[-2]
num_mixtures = FLAGS.moe_num_mixtures
# gating coefficients
original_input = tf.nn.l2_normalize(original_input, dim=1)
mean_output = tf.reduce_mean(model_input, axis=2)
## batch_size x moe_num_mixtures
gate_activations = slim.fully_connected(
tf.concat([original_input, mean_output], axis=1),
num_mixtures,
activation_fn=tf.nn.softmax,
weights_regularizer=slim.l2_regularizer(l2_penalty),
scope="gates"+sub_scope)
# matrix
weight_var = tf.get_variable("ensemble_weight",
shape=[num_mixtures, num_methods],
regularizer=slim.l2_regularizer(l2_penalty))
# weight
gated_weight = tf.einsum("ij,jk->ik", gate_activations, weight_var)
rl_gated_weight = tf.nn.relu(gated_weight) + 1e-9
sum_gated_weight = tf.reduce_sum(rl_gated_weight, axis=1, keep_dims=True)
weight = rel_gated_weight / sum_gated_weight
# weighted output
output = tf.einsum("ik,ijk->ij", weight, model_input)
return {"predictions": output}