def auto_placeholder(dtype, shape, name, feed_data, preprocess_offset=None):
placeholder_shape = [None, None] + list(shape)[1:] if shape else shape
placeholder = tf.placeholder(dtype, placeholder_shape, name)
placeholder.required_feeds = RequiredFeeds(placeholder)
placeholder.feed_data = feed_data
tensor = preprocess_offset(placeholder) if preprocess_offset else placeholder
def offset_data(t, name):
input_len = shape[0]
if not hasattr(placeholder, 'zero_offset'):
placeholder.zero_offset = tf.placeholder_with_default(
input_len - 1, # If no zero_offset is given assume that t = 0
(),
name + '/zero_offset')
end = t + 1
start = end - input_len
zero_offset = placeholder.zero_offset
offset_tensor = tensor[:, start + zero_offset:end + zero_offset]
input_range = np.arange(start, end)
offset_tensor.required_feeds = RequiredFeeds(placeholder, input_range)
return tf.reshape(offset_tensor, [-1] + shape, name)
placeholder.offset_data = offset_data
return placeholder
评论列表
文章目录