TensorFlow Fashion MNIST 資料集中的影像在范圍內[0,255],我希望將其轉換為 tanh 函式的范圍[-1,1],為此我使用如下所示的 map 函式。
import tensorflow_datasets as tfds
def scale_images(data):
image = data['image']
return (image - 127.5) / 127.5
ds = tfds.load('fashion_mnist', split='train')
ds = ds.map(scale_images)
但是它給了我下面提到的錯誤。
File "<ipython-input-74-665c2cac0d84>", line 8, in scale_images *
return (image - 127.5) / 127.5
TypeError: Expected uint8 passed to parameter 'y' of op 'Sub', got 127.5 of type 'float' instead. Error: Expected uint8, but got 127.5 of type 'float'.
當我用來return image / 255將其縮小到范圍時它作業得很好,[0,1]但是在使用上面顯示的代碼時它會出錯。
請告訴我如何將資料集的范圍轉換為[-1,1].
編輯:
對于背景關系,我正在使用此代碼作為參考創建一個 GAN。但是我已將最后一層生成器的激活更改為 tanh。因此,我還需要更改影像以匹配 tanh 輸出的范圍,以便有效地訓練我的鑒別器。所以我試圖修改 scale_images 函式來做同樣的事情。
uj5u.com熱心網友回復:
你可以通過image / 255但你不能通過(image - 127.5) / 127.5,所以你可以使用以下技巧:
方法_1:
要從 range轉到[-1,1]range [0,1],您可以使用如下簡單的技巧(num*2)-1:
def scale_images(data):
image = data['image']
image = image / 255
return (image * 2) - 1
方法_2:
你可以tf.cast(image, tf.float32)像下面這樣使用:
def scale_images(data):
image = data['image']
image = tf.cast(image, tf.float32)
return (image - 127.5) / 127.5
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/491605.html
