python-3.x - Face Generation TensorFlow 将尺寸从 28px conv2d_transpose 增加
问题描述
我正在关注本教程,并且可以使用我的 GPU 成功生成 28 像素大小的人脸。但是我不知道如何使用下面的生成器函数的逻辑来增加人脸的大小(目前为 28px):
def generator(z, out_channel_dim, is_train=True, alpha=0.2, keep_prob=0.5):
with tf.variable_scope('generator', reuse=(not is_train)):
# First fully connected layer, 4x4x1024
fc = tf.layers.dense(z, 4 * 4 * 1024, use_bias=False)
fc = tf.reshape(fc, (-1, 4, 4, 1024))
bn0 = tf.layers.batch_normalization(fc, training=is_train)
lrelu0 = tf.maximum(alpha * bn0, bn0)
drop0 = tf.layers.dropout(lrelu0, keep_prob, training=is_train)
# Deconvolution, 7x7x512
conv1 = tf.layers.conv2d_transpose(drop0, 512, 4, 1, 'valid', use_bias=False)
bn1 = tf.layers.batch_normalization(conv1, training=is_train)
lrelu1 = tf.maximum(alpha * bn1, bn1)
drop1 = tf.layers.dropout(lrelu1, keep_prob, training=is_train)
# Deconvolution, 14x14x256
conv2 = tf.layers.conv2d_transpose(drop1, 256, 5, 2, 'same', use_bias=False)
bn2 = tf.layers.batch_normalization(conv2, training=is_train)
lrelu2 = tf.maximum(alpha * bn2, bn2)
drop2 = tf.layers.dropout(lrelu2, keep_prob, training=is_train)
# Output layer, 28x28xn
logits = tf.layers.conv2d_transpose(drop2, out_channel_dim, 5, 2, 'same')
out = tf.tanh(logits)
return out
我认为我需要更改以下内容:
conv2 = tf.layers.conv2d_transpose(drop1, 256, 5, 2, 'same', use_bias=False)
解决方案
应该在最后一层进行更改,logits
因为那是决定输出大小的层。将out_channel_dim
值更改为您想要的大小将是解决方案。这可能会导致一些错误(由于内核大小和步幅值)或结果将不同(因为您的网络没有针对此大小进行训练)。
推荐阅读
- android - 如何解决 Android Studio 警告错误?
- vb.net - 通过.net客户端调用WCF方法需要太长时间
- php - 为什么这些变量的总和返回负零?
- javascript - 在打字稿中, if(item.some((item) => !item.available) 是什么意思?
- angular - Power BI 嵌入 Angular UI 应用程序
- excel - 直到最后一行的单元格引用
- javascript - 如何在反应中将日期/时间转换为人类可读的形式?
- json - 在 Spark 中处理 json 文件
- c++ - v8 不再支持 v8::Value::ToNumber 了吗?
- magento2 - magento 2.3 通过 API 上传发票到订单