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
评论列表
文章目录