我正在使用ImageDataGenerator和flow_from_dataframe加载数据集。
使用flow\u from\u dataframe
和shuffle=True
对数据集中的图像进行洗牌。
我想洗牌。如果我有12个图像并且批大小=3,那么我有4个批:
batch1 = [image1, image2, image3]
batch2 = [image4, image5, image6]
batch3 = [image7, image8, image9]
batch4 = [image10, image11, image12]
我希望在不洗牌每个批次中的图像的情况下洗牌批次,以便获得例如:
batch2 = [image4, image5, image6]
batch1 = [image1, image2, image3]
batch4 = [image10, image11, image12]
batch3 = [image7, image8, image9]
这可能与ImageDataGenerator和flow_from_dataframe?有预处理功能我可以使用吗?
考虑使用<代码> TF。数据数据集API。您可以在洗牌之前执行批处理操作。
import tensorflow as tf
file_names = [f'image_{i}' for i in range(1, 10)]
ds = tf.data.Dataset.from_tensor_slices(file_names).batch(3).shuffle(3)
for _ in range(3):
for batch in ds:
print(batch.numpy())
print()
[b'image_4' b'image_5' b'image_6']
[b'image_7' b'image_8' b'image_9']
[b'image_1' b'image_2' b'image_3']
[b'image_1' b'image_2' b'image_3']
[b'image_4' b'image_5' b'image_6']
[b'image_7' b'image_8' b'image_9']
[b'image_1' b'image_2' b'image_3']
[b'image_4' b'image_5' b'image_6']
[b'image_7' b'image_8' b'image_9']
然后,可以使用映射操作从文件名加载图像:
def read_image(file_name):
image = tf.io.read_file(file_name)
image = tf.image.decode_image(image)
image = tf.image.convert_image_dtype(image, tf.float32)
image = tf.image.resize_with_crop_or_pad(image, target_height=224, target_width=224)
label = tf.strings.split(file_path, os.sep)[0]
label = tf.cast(tf.equal(label, class_categories), tf.int32)
return image, label
ds = ds.map(read_image)
问题内容: 我想知道,是否有某种方法可以在mysql / sql中改组字符串的字母,即类似 伪代码的内容 :? 从http://dev.mysql.com/doc/refman/5.0/en/string- functions.html 找不到任何内容,对其进行搜索似乎只是找到改组结果的解决方案,而不是字符串。 问题答案: 干得好: 有关输出,请参见sqlfiddle.com。 已使用mariad
大多数纸牌游戏都需要洗牌,也就是让纸牌随机排列。在第10.5节,我们看到了怎样生成随机数,但怎样利用随机数实现洗牌功能却并非显然意见的。 一种可行的方案是,模拟人洗牌的方法,将牌分为两堆,然后通过在每个牌堆中轮流选择的方式实现原牌堆的重新组织。因为一般而言,人并不能做到完美地洗牌,而程序经过大约7次迭代之后,牌堆中纸牌的顺序已经相当随机了。但是计算机程序每次在做完美洗牌的时候有一个令人讨厌的属性—
我已经完成了完美洗牌的几乎所有java代码。我只是在与错误作斗争:“线程“main”java.lang.ArrayIndexOutOfBoundsException中的异常:索引26长度26在cards\u shuffle.main(cards\u shuffle.java:72)”此错误指的是行: 洗牌牌组的上半部分: 黑桃4黑桃10钻石8黑桃A钻石4红桃J红桃Q黑桃Q黑桃4钻石J黑桃K红桃K红
在第13.6节我们编写了一个洗牌算法的伪代码。假设shuffleDeck函数实现洗牌功能,其参数为一个牌堆,我们就可以这样创建牌堆并洗牌: Deck deck; // 创建一个标准的52张牌的牌堆 deck.shuffle (); // 洗牌 然后,使用subdeck函数来分几手牌: Deck hand1 = deck.subdeck (0, 4); Deck hand2 = dec
它是否执行map1,然后按键分区,并将中间数据保存在磁盘(内存)上? 然后读取中间文件2次,一次用于map2 map3分支,第二次用于map4 map5,而不再次计算rddB,即使我们没有在rddB上执行隐式缓存?
我有以下数据帧: 数据帧是从csv文件中读取的。所有类型为1的行都位于顶部,后面是类型为2的行,后面是类型为3的行,以此类推。 我想改变数据帧行的顺序,这样所有的都是混合的。一个可能的结果可能是: 我怎样才能做到这一点?
Reference 关于乱序(shuffle)与随机采样(sample)的一点探究 - xybaby - 博客园 洗牌算法 Fisher–Yates shuffle - Wikipedia Knuth-Durstenfeld Shuffle(Fisher–Yates Shuffle 改进版) Knuth-Durstenfeld Shuffle 是一个“原地”(in-place)算法 伪代码 To
本节用随机数产生器开发一个洗牌与发牌程序。这个程序可以用于实现玩某种牌的游戏程序。 为了解决一些微妙的性能问题,我们故意用次优洗牌与发牌算法。练习中要开发更有效的算法。 利用自上而下逐步完善的方法,我们开发一个程序,洗 52 张牌并发52张牌。自上而下逐步完善的方法在解决大而复杂的问题时特别有用。 我们用 4 x 13 的双下标数组 deck 表示要玩的牌(如图 5.23)。行表示花色,0 表示红