【发布时间】:2019-09-24 04:09:54
【问题描述】:
给定一个张量流数据集
Train_dataset = tf.data.Dataset.from_tensor_slices((Train_Image_Filenames,Train_Image_Labels))
Train_dataset = Train_dataset.map(Parse_JPEG_Augmented)
...
我想对批次进行分层以处理类别不平衡问题。我找到了 tf.contrib.training.stratified_sample 并认为我可以通过以下方式使用它:
Train_dataset_iter = Train_dataset.make_one_shot_iterator()
Train_dataset_Image_Batch,Train_dataset_Label_Batch = Train_dataset_iter.get_next()
Train_Stratified_Images,Train_Stratified_Labels = tf.contrib.training.stratified_sample(Train_dataset_Image_Batch,Train_dataset_Label_Batch,[1/Classes]*Classes,Batch_Size)
但它给出了以下错误,我不确定这是否能让我保持 tensorflow 数据集的性能优势,因为我可能不得不通过 feed_dict 传递 Train_Stratified_Images 和 Train_Stratified_Labels?
File "/xxx/xxx/anaconda3/lib/python3.6/site-packages/tensorflow/contrib/training/python/training/sampling_ops.py", line 192, in stratified_sample
with ops.name_scope(name, 'stratified_sample', list(tensors) + [labels]):
File "/xxx/xxx/anaconda3/lib/python3.6/site-packages/tensorflow/python/framework/ops.py", line 459, in __iter__
"Tensor objects are only iterable when eager execution is "
TypeError: Tensor objects are only iterable when eager execution is enabled. To iterate over this tensor use tf.map_fn.
将数据集与分层批次一起使用的“最佳实践”方式是什么?
【问题讨论】:
标签: tensorflow