首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >调用ValueError函数时不支持“SubpixelConv2D :无值”

调用ValueError函数时不支持“SubpixelConv2D :无值”
EN

Stack Overflow用户
提问于 2019-04-25 20:02:29
回答 1查看 224关注 0票数 0

我正在尝试利用SubpixelConv2D函数

我正在训练一个GAN,并希望使用亚像素而不是插值或卷积转置的样本,因为他们留下的伪影。

我正在使用Tensorflow/1.4.0和Keras/2.2.4

当我尝试调用函数时,我会收到以下错误:

"ValueError:不支持任何值。“

我使用以下方法调用该函数:

代码语言:javascript
复制
import tensorflow as tf
from tensorflow import keras
import Utils

def up_sampling_block(model):

    #model = keras.layers.Conv2DTranspose(filters = filters, kernel_size = kernal_size, strides = strides, padding = "same")(model)
    model = Utils.SubpixelConv2D(model)(model)
    #model = keras.layers.UpSampling2D(size = 2)(model)
    #model = keras.layers.Conv2D(filters = filters, kernel_size = kernal_size, strides = strides, padding = "same")(model)
    #model = keras.layers.LeakyReLU(alpha = 0.2)(model)

    return model

其职能如下:

代码语言:javascript
复制
# Subpixel Conv will upsample from (h, w, c) to (h/r, w/r, c/r^2)
def SubpixelConv2D(input_shape, scale=4):
    def subpixel_shape(input_shape, scale):
        dims = [input_shape[0], input_shape[1] * scale, input_shape[2] * scale, int(input_shape[3] / (scale ** 2))]             
        output_shape = tuple(dims)
        return output_shape

    def subpixel(x):
        return tf.depth_to_space(x, scale)

    return keras.layers.Lambda(subpixel, subpixel_shape)

输入张量的大小是(?,48,48,64),我相信"?“因为批处理大小导致了错误,但我似乎无法解决这个问题。

EN

回答 1

Stack Overflow用户

发布于 2019-04-25 20:40:54

Lambda层的第二个函数只能是输入形状的函数:subpixel_shape(input_shape),但是您需要第二个参数,称为scale,该参数在只有input_shape传递时默认为未定义。尝试将lambda input_shape: subpixel_shape(input_shape, scale)传递给keras.layers.Lambda函数。然后,按照外部函数的要求,缩放将默认为4。或从scale函数参数中删除subpixel_shape

代码语言:javascript
复制
def outer(a=0):
    def inner():
        print(a)

    return inner

print(outer()()) # prints 0
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55856828

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档