为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

临摹微笑 2022-11-24 14:55:28
导入模块:import pandas as pdimport numpy as npimport matplotlib.pyplot as pltimport tensorflow as tffrom tensorflow.keras.layers import GaussianNoisefrom tensorflow.keras.datasets import mnist(X_train, y_train), (X_test, y_test) = mnist.load_data()重新缩放数据X_train = X_train/255X_test = X_test/255plt.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)'
查看完整描述

2 回答

?
繁花不似锦

TA贡献1851条经验 获得超4个赞

类型转换成本很高,因此 Tensorflow 不进行自动类型转换。默认情况下,Tensorflow 的数据类型是float32,而您导入的数据集的数据类型是float64。您只需将可选的 dtype 参数传递给GaussianNoise

sample = GaussianNoise(0.2, dtype=tf.float64)

或者投射数组:

noisey = sample(X_test[0:2].astype(np.float32),training=True)

我建议第二个。


查看完整回答
反对 回复 2022-11-24
?
慕莱坞森

TA贡献1810条经验 获得超4个赞

我在我的本地主机上为 Jupyter Notebook 尝试了这个,以下是带有警告的结果。

//img1.sycdn.imooc.com//637f1585000114c409000862.jpg

从警告中可以清楚地看出类型转换的问题是非常昂贵的。您可以将其改进为:


X_train = X_train.astype('float32') / 255


X_test = X_test.astype('float32') / 255


查看完整回答
反对 回复 2022-11-24
  • 2 回答
  • 0 关注
  • 82 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信