如何配置神经网络的层以生成 400x400 图像?

How can I configure the layers of the neruonal network to generate a 400x400 image?

你好,我开始进入神经网络世界,我以出版商 Marcombo 的书“Python 深度学习”为例,在此生成了生成对抗网络基于书上的例子,开发代码如下

# Esta es la linea original 
train_images = train_images.reshape(train_images.shape[0], 28, 28, 1).astype('float32')
# se reemplazo por la siguiente linea
train_images = train_images.reshape(train_images.shape[0], 400, 400, 1).astype('float32')

train_images = (train_images - 127.5) / 127.5 # esta linea normaliza de -1 a 1 los datos 

BUFFER_SIZE = 60000
BATCH_SIZE = 256
train_dataset = tf.data.Dataset.from_tensor_slices(train_images).shuffle(BUFFER_SIZE).batch(BATCH_SIZE)

from tensorflow.keras import Sequential
from tensorflow.keras.layers import Dense, Reshape, Conv2DTranspose, BatchNormalization, LeakyReLU

def make_generator_model():
    model = Sequential()
    model.add(Dense(7*7*256, use_bias=False, input_shape=(100,)))

    model.add(Reshape((7, 7, 256)))

    model.add(Conv2DTranspose(128, (5, 5), strides=(2, 2), padding='same'))
    model.add(BatchNormalization())
    model.add(LeakyReLU(alpha=0.01))

    model.add(Conv2DTranspose(64, (5, 5), strides=(1, 1), padding='same'))
    model.add(BatchNormalization())
    model.add(LeakyReLU(alpha=0.01))

    model.add(Conv2DTranspose(1, (5, 5), strides=(2, 2), padding='same', activation='tanh'))

    return model
generator = make_generator_model()
generator.summary ()

noise_dim = 100
noise = tf.random.normal([1, noise_dim])
generated_image = generator(noise, training=False)

plt.imshow(generated_image[0, :, :, 0], cmap='gray')

这会生成一个噪声图像,该图像将被训练直到看起来像训练图像“train_images”,示例的原始数据来自 28x28 图像,我的目的是使用来自已成功加载的 400x400 图像,但当它尝试加载图像时,它告诉我这是不可能的。

---------------------------------------------------------------------------
ResourceExhaustedError                    Traceback (most recent call last)
<ipython-input-14-73ddb44f2cff> in <module>()
    182 if __name__ == "__main__":
    183     execute = Read()
--> 184     execute.read()

4 frames
/usr/local/lib/python3.7/dist-packages/keras/backend.py in random_uniform(self, shape, minval, maxval, dtype)
   1831     return tf.random.uniform(
   1832         shape=shape, minval=minval, maxval=maxval, dtype=dtype,
-> 1833         seed=self.make_legacy_seed())
   1834 
   1835   def truncated_normal(self, shape, mean=0., stddev=1., dtype=None):

ResourceExhaustedError: OOM when allocating tensor with shape[100,2560000] and type float on /job:localhost/replica:0/task:0/device:GPU:0 by allocator GPU_0_bfc [Op:RandomUniform]

我的具体意图是生成一个大小为 400x400 的噪声图像,以便可以使用 400x400 的图像对其进行训练

如何配置神经网络的层以生成 400x400 的图像?

所有引用的代码均摘自 Jordi Torres 的《Python 深度学习》一书。

在您的错误消息中提到“OOM”,这意味着内存不足。当您尝试在 GPU 上分配更多可用数据时,会出现此消息。您有以下选择:

  1. 减小批量大小
  2. 减少数据的空间维度
  3. 使用内存更大的 GPU。