张量值在多次求值时发生变化

2024-06-16 11:04:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试对批量大小为4的一小批图像进行数据扩充(仅用于测试目的)

sess = tf.Session()
#Create dataset
dataset = get_dataset()
#Set seed placeholder
seedin = tf.placeholder(tf.int64,shape=())
#Get iterator
iterator = create_next_batch_iterator(dataset,seedin)
#Initialize the Iterator
sess.run(iterator.initializer,feed_dict={seedin:6})
#Get next batch
next_batch = get_next_batch(iterator)
print next_batch
print 'without augmentation:',next_batch['labels'].eval(session=sess)

我得到的结果是

{'images': <tf.Tensor 'IteratorGetNext:0' shape=(4, 96, 96, 3) dtype=uint8>, 
'labels': <tf.Tensor 'IteratorGetNext:1' shape=(4,) dtype=uint8>}
without augmentation: [6 1 7 6]

但是如果我用下一行代码替换最后一行

next_batch = augment_data(get_next_batch(iterator),sess)
print next_batch

问题从这里开始。。。你知道吗

augment_data函数的代码

def augment_data(batch,sess,naug=5):
    labels_tensor = batch['labels'].eval(session=sess)
    print labels_tensor
    labels_array = np.array(batch['labels'].eval(session=sess))
    print labels_array

我得到两个不同的值labels_tensorlabels_array

[6 1 7 6]
[9 3 8 4]

这些值与执行时得到的值相同

next_batch = get_next_batch(iterator)
print next_batch

连续两次。你知道吗

似乎,每当我试图从batch得到张量时,get_next_batch()函数就会被执行,这就是为什么我会得到一组新的值。你知道吗

这是为什么?? 我怎样才能解决这个问题?你知道吗


Tags: getlabelssessiontfevalbatcharraydataset