如何向图像数据添加 Keras- 高斯噪声

导入模块:


import pandas as pd

import numpy as np

import matplotlib.pyplot as plt

import tensorflow as tf

from tensorflow.keras.layers import GaussianNoise

from tensorflow.keras.datasets import mnist


(X_train, y_train), (X_test, y_test) = mnist.load_data()

重新缩放数据


X_train = X_train/255

X_test = X_test/255

plt.imshow(X_train[0])

使用 std dev=0.2 添加高斯噪声


sample = GaussianNoise(0.2)

noisey = sample(X_test[0:2],training=True)   #plt.imshow(noisey[0])

获取错误:


ValueError: Tensor conversion requested dtype float64 for Tensor with dtype float32: 'Tensor("gaussian_noise_4_1/random_normal:0", shape=(2, 28, 28), dtype=float32)'


临摹微笑
浏览 84回答 2
2回答

繁花不似锦

类型转换成本很高,因此 Tensorflow 不进行自动类型转换。默认情况下,Tensorflow 的数据类型是float32,而您导入的数据集的数据类型是float64。您只需将可选的 dtype 参数传递给GaussianNoise:sample = GaussianNoise(0.2, dtype=tf.float64)或者投射数组:noisey = sample(X_test[0:2].astype(np.float32),training=True)我建议第二个。

慕莱坞森

我在我的本地主机上为 Jupyter Notebook 尝试了这个,以下是带有警告的结果。从警告中可以清楚地看出类型转换的问题是非常昂贵的。您可以将其改进为:X_train = X_train.astype('float32') / 255X_test = X_test.astype('float32') / 255
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python