- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
对于一组图像,我很困惑术语数据增强是否意味着转换当前数据集(例如裁剪/翻转/旋转/...)或者它是否意味着通过添加裁剪/将图像翻转/旋转到初始数据集。据我了解,从这个question还有这个one ,这意味着两者。如果我错了,请纠正我。
因此,使用 Tensorflow Dataset,我想实现第二个目标:增加数据量。
我正在使用来自 TFDS 的 ImageNet 数据(训练集不可用):
import tensorflow_datasets as tfds
ds = tfds.load('imagenet_a', split='test', as_supervised=True)
我想翻转图像:
def transform(image, label):
image = tf.image.flip_left_right(image)
return image, label
如果我将转换直接应用于数据集,效果会很好。但它不会增加数据量:
ds = ds.map(transform)
因此,我尝试创建第二个数据集并将两者连接起来:
ds0 = ds.map(transform)
ds = ds.concatenate(ds0)
但是我得到以下错误:
TypeError: Two datasets to concatenate have different types (tf.uint8, tf.int64) and (tf.float32, tf.int64)
是不是拼接两个数据集来增加训练集的方法?或者如何正确地做到这一点? (或如何解决我的错误)
我知道 ImageDataGenerator ,但它不包含我想要的转换
最佳答案
正如错误明确指出的那样,这两个数据集应该具有相同的数据类型,您可以使用 tf.cast
实现这一点,但对于大型数据集来说这是一个有点忙乱的过程。
您还可以使用 tf.data.experimental.sample_from_datasets 合并数据集
下面是带有插图的代码。
import tensorflow_datasets as tfds
import matplotlib.pyplot as plt
import tensorflow as tf
from tensorflow.keras.preprocessing.image import ImageDataGenerator
from keras.preprocessing.image import img_to_array, array_to_img
ds , info = tfds.load('imagenet_a', split='test', as_supervised=True,with_info=True)
原始样本图片:
vis = tfds.visualization.show_examples(ds, info)
我正在拍摄 10 张图像进行测试,并使用 map()
函数随机翻转这 10 张图像以创建新数据集。
ds1 = ds.take(10)
ds2 = ds1.map(lambda image, label: (tf.image.random_flip_left_right(image), label))
#Merging both the datasets
new_ds = tf.data.experimental.sample_from_datasets([ds1,ds2])
print(len(list(new_ds))) # Which returns 20, 10 original plus 10 randomly filpped images.
f, axarr = plt.subplots(5,4,figsize=(15, 15))
ix = 0
i = 0
count = 0
k = 0
for images, labels in new_ds:
crop_img = array_to_img(images)
axarr[i,ix].imshow(crop_img)
ix=ix+1
count = count + 1
if count == 4:
i = i + 1
count = 0
ix = 0
合并数据集:
关于python - 如何扩充 Tensorflow 数据集中的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64560694/
我正在尝试填充一个 ListView ,其中每一行都有 2 个 TextView 和一个按钮。我想我几乎让它正常工作,但现在 ListView 只显示 ListView 中的 1 个项目并忽略其他数据
是否可以通过向 DOM 元素添加新属性来扩充普通 JavaScript 对象?例如,我们能否为按钮或输入添加一个新属性,比如一个指示用户最后一次点击它的时间的值? 最佳答案 是的。有时您会发现它被描述
我的要求是能够快速检索树中的最小值和最大值。 (注意,不是最小/最大 key ,而是卫星数据的最小/最大)。 树将基于字符串作为键,每个节点将存储一个整数。这个整数必然会改变并不断更新。键保持固定 我
我正在浏览 Introduction to Algorithms by Cormen第 14 章(增强数据结构),他在其中谈论区间树。下面是他提到的区间树背后的设计方法。 Step 1: Underl
我知道如何为每个对象添加新方法 - 通过扩充对象的原型(prototype): Object.prototype.foo = function() { }; 但是,是否可以只为 DOM 元素节点定义
我正在开发一个已经在 Kaggle 实现的项目这与图像分类有关。我总共有 6 个类别要预测,分别是愤怒、快乐、悲伤等。我已经实现了 CNN 模型,目前仅使用 4 个类别(图像数量最多的类别),但我的模
在我的 NativeScript 项目中,我想包含来自 Android 支持库的 RecyclerView。我将依赖项包含在 app/App_Resources/Android/app.gradle
我正在创建一个使用 twitter api 的应用程序。 我正在检索推文并向用户展示。 在某些情况下,推文有链接,如下图所示。 阅读 twitter 的 api 文档,我发现了一个叫做“增强 URL
我正在阅读JavaScript the good parts这本书,看到了以下代码: Function.prototype.method = function (name, func) { this
我有一个按钮 View 。我是否必须将它包装在 Layout 中以便能够在 Activity 中膨胀它的实例? View 是否有类似的模式,以便我可以声明性地设置一次,然后创建它的多个实例? 谢谢。
我在数据库的 BLOB 字段中有一个 zip 流。我正在尝试给它充气,但到目前为止还做不到。 问题是这个流是一个压缩流,而不是一个完整的压缩文件。 如果清楚的话,这将是对其进行膨胀的 Java 代码:
我是一名优秀的程序员,十分优秀!