Tensorflow的新功能,我正在使用神经网络对图像进行分类。我有Tensor
包含形状[N, 128, 128, 1]
(N图像128x128,带1个通道)和Tensor
形状[N]
的图像,其中包含标签图像。
我想把它全部洗干并在训练和测试张量之间分开(让我们说80%-20%)。我没有找到一种方法来“压缩”我的张量以将每个图像与其标签相关联(为了以相同的方式对图像和标签进行混洗)。可能吗 ?如果没有,我怎样才能实现改组/拆分工作?
感谢您的帮助!
答案 0 :(得分:1)
只需使用相同的种子'关键字参数值,比如说函数中的seed = 8 标签和数据均为tf.random_shuffle。
ipdb> my_data = tf.convert_to_tensor([[1,1], [2,2], [3,3], [4,4],
[5,5], [6,6], [7,7], [8,8]])
ipdb> my_labels = tf.convert_to_tensor([1,2,3,4,5,6,7,8])
ipdb> sess.run(tf.random_shuffle(my_data, seed=8))
array([[5, 5],
[3, 3],
[1, 1],
[7, 7],
[2, 2],
[8, 8],
[4, 4],
[6, 6]], dtype=int32)
ipdb> sess.run(tf.random_shuffle(my_labels, seed=8))
array([5, 3, 1, 7, 2, 8, 4, 6], dtype=int32)
编辑: 如果你需要在运行时进行随机改组,比如说批次会随机改组,但是你可以使用这样的技巧:
# each time shuffling pattern will be differend
# for now, it works
indicies = tf.random_shuffle(tf.range(8))
params = tf.convert_to_tensor([111, 222, 333, 444, 555, 666, 777, 888])
sess.run(tf.add(tf.gather(params, indicies), tf.gather(params, indicies) * 1000))
> array([555555, 444444, 666666, 222222, 111111, 888888, 333333, 777777], dtype=int32)
由相同数字组成的数字显示,收集< -indicies采用相同的种子值