raise VALUERROR(“名称\范围的名称必须是字符串。”

2024-05-23 21:48:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我在Keras中定义了Double conv层,将其用作Unet体系结构中的参考,如下所示:

class ConvBlock(keras.Model):
  def __init__(self,in_channels):
    super(ConvBlock,self).__init__()
    self.in_channels = in_channels
    self.conv = keras.Sequential(
        layers.Conv2D(filters=self.in_channels,kernel_size=(3,3),strides=(1,1),padding="same",use_bias=False),
#       layers.BatchNormalization(),
#       layers.ReLU(),       
        layers.Conv2D(filters=self.in_channels,kernel_size=(3,3),strides=(1,1),padding="same", use_bias=False),
#       layers.BatchNormalization()
#       layers.ReLU(),
    )

  def call(self,input_tensor):
    return self.conv(input_tensor)

在单元测试期间,我遇到了以下错误:ValueError:name\u范围的名称必须是字符串。 这是我的代码测试,非常简单

model = ConvBlock(64)
y = tf.random.uniform((2,32,32,3))
print(model(y).shape)

Tags: inselfsizeinitlayersdefkernelfilters
1条回答
网友
1楼 · 发布于 2024-05-23 21:48:30

tf.keras.keras.Sequential获取图层列表,请尝试以下操作:

    self.conv = keras.Sequential([
        layers.Conv2D(filters=self.in_channels,kernel_size=(3,3),strides=(1,1),padding="same",use_bias=False),    
        layers.Conv2D(filters=self.in_channels,kernel_size=(3,3),strides=(1,1),padding="same", use_bias=False),
        ]
    )

相关问题 更多 >