实现随机采样
dataset = tf.data.Dataset.from_tensor_slices((x, y))
dataset = dataset.shuffle(len(x)).batch(32)train_size, val_size, test_size = 0.8, 0.1, 0.1train_dataset = dataset.take(int(train_size * len(dataset)))
val_dataset = dataset.skip(int(train_size * len(dataset))).take(int(val_size * len(dataset)))
test_dataset = dataset.skip(int((train_size + val_size) * len(dataset)))
具体来说,这段代码首先使用 from_tensor_slices
方法将输入的 x 和 y 作为元组进行拼接,形成一个 tf.data.Dataset
对象。随后,使用 shuffle
方法对整个数据集进行乱序操作,然后使用 batch
方法将数据集划分为大小为 32 的 batch
。
接着,手动指定训练集、验证集和测试集的比例,并利用 take
和 skip
方法将整个数据集按照相应比例划分为三部分。其中,take
方法表示从数据集的开头取出指定数量的数据项,而 skip 方法表示跳过指定数量的数据项,从数据集的中间或结尾开始取数。最终,将三个子数据集存储到 train_dataset、val_dataset
和 test_dataset
三个变量中,以供后续模型训练和评估使用。
将数据转换为numpy.array() 数组
- 可以使用
tf.data.Dataset
实例的as_numpy_iterator()
方法将其转换为Numpy
数组迭代器,并使用np.concatenate()
方法将它们合并成一个 Numpy 数组
test_images = []
test_labels = []for image, label in test_dataset:test_images.append(image)test_labels.append(label)test_images = tf.concat(test_images, axis=0)
test_labels = tf.concat(test_labels, axis=0)predictions = model.predict(test_images, batch_size=batch_size)
在这个示例中,我们首先循环遍历测试数据集,并将每个样本的输入和标签分别添加到 test_images 和 test_labels 列表中。然后,我们使用 tf.concat() 方法将所有输入和标签连接成一个张量。