def _create_input_queue(self, queue_capacity_factor=16):
self.input_ops, self.target_ops = {}, {}
self.queue_ops, self.enqueue_ops = {}, {}
self.x, self.y, self.seq_length, self.mask = {}, {}, {}, {}
for name in self.data_num.keys():
self.input_ops[name] = tf.placeholder(tf.float32, shape=[None, None])
self.target_ops[name] = tf.placeholder(tf.int32, shape=[None])
min_after_dequeue = 1000
capacity = min_after_dequeue + 3 * self.batch_size
self.queue_ops[name] = tf.RandomShuffleQueue(
capacity=capacity,
min_after_dequeue=min_after_dequeue,
dtypes=[tf.float32, tf.int32],
shapes=[[self.max_length, 2,], [self.max_length]],
seed=self.random_seed,
name="random_queue_{}".format(name))
self.enqueue_ops[name] = \
self.queue_ops[name].enqueue([self.input_ops[name], self.target_ops[name]])
inputs, labels = self.queue_ops[name].dequeue()
seq_length = tf.shape(inputs)[0]
if self.use_terminal_symbol:
mask = tf.ones([seq_length + 1], dtype=tf.float32) # terminal symbol
else:
mask = tf.ones([seq_length], dtype=tf.float32)
self.x[name], self.y[name], self.seq_length[name], self.mask[name] = \
tf.train.batch(
[inputs, labels, seq_length, mask],
batch_size=self.batch_size,
capacity=capacity,
dynamic_pad=True,
name="batch_and_pad")
data_loader.py 文件源码
python
阅读 28
收藏 0
点赞 0
评论 0
评论列表
文章目录