【问题标题】:How can I configure the layers of the neruonal network to generate a 400x400 image?如何配置神经网络的层以生成 400x400 图像?
【发布时间】:2022-01-06 02:52:46
【问题描述】:

你好,我从神经网络世界开始,我以出版商 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 深度学习》一书。

【问题讨论】:

  • 您的系统无法加载如此大的图像。尝试使用内存更大的系统。
  • 我想说你可以先减少批量大小。要尝试这是否是这里的问题,请尝试将批量大小设置为 1。

标签: python tensorflow keras deep-learning generative-adversarial-network


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2016-09-02
    • 2016-10-24
    • 2018-08-29
    • 2011-03-28
    • 2017-08-20
    • 1970-01-01
    • 2015-04-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多