如何配置神经网络的层以生成 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 上分配更多可用数据时,会出现此消息。您有以下选择:
- 减小批量大小
- 减少数据的空间维度
- 使用内存更大的 GPU。
你好,我开始进入神经网络世界,我以出版商 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 上分配更多可用数据时,会出现此消息。您有以下选择:
- 减小批量大小
- 减少数据的空间维度
- 使用内存更大的 GPU。