在TensorFlow进行改组和训练

时间:2017-03-29 11:39:38

标签: tensorflow shuffle training-data

我正在使用此代码解码CSV文件:

def read_csv(batch_size, file_name, record_defaults):
   filename_queue = tf.train.string_input_producer([file_name])
   reader = tf.TextLineReader(skip_header_lines=1)
   key, value = reader.read(filename_queue)
   decoded = tf.decode_csv(value, record_defaults=record_defaults)

   return tf.train.batch(decoded, batch_size=batch_size, capacity=batch_size*50, allow_smaller_final_batch=True)

考虑我的CSV文件如下(40行; 10倍数1,2,3和4):

[1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4]  

两个问题: (1)当我使用 tf.train.batch ,batch_size为10,步数= 4时,在训练期间从队列中取出的批次是:

step 1: [1,1,1,1,1,1,1,1,1,1]
step 2: [3,3,3,3,3,3,3,3,3,3]
step 3: [1,1,1,1,1,1,1,1,1,1]
step 4: [3,3,3,3,3,3,3,3,3,3]

......我不明白为什么。我认为它会在每批10个中正确地对1s,2s,3s和4s进行采样。

(2)当我使用 tf.train.shuffle_batch 而不是 tf.train.batch 时,改组输出类似于:

step 1: [1,1,1,1,2,2,1,1,2,1]
step 2: [4,3,4,3,2,1,4,3,3,2]
step 3: [4,1,1,2,1,1,1,2,2,2]
step 4: [3,3,3,1,3,4,2,4,4,4]

为什么这里会显示一些数字,例如13次(数字1),或8次(数字4),而不是10次?出于这个原因,如果我只使用4个步骤进行训练,我猜我的时代并不完整,因为有些数字没有被采用。

0 个答案:

没有答案