微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

tf.keras.layers.Conv2D.trainable_variables 为空

如何解决tf.keras.layers.Conv2D.trainable_variables 为空

我正在尝试在我的 tensorflow 模型中使用 keras 层。但是这些层不会创建任何可训练的变量。例如,下面的代码返回空列表。

import tensorflow as tf


class ResidualBlock(tf.Module):
    def __init__(self,kernel_size):
        super().__init__()
        self.conv2d = tf.keras.layers.Conv2D(16,kernel_size,padding='same',input_shape=(64,64,16))

    def __call__(self,x):
        return x + self.conv2d(x)


rb = ResidualBlock(3)
print(rb.conv2d.trainable_variables)

conv2d 层的可训练变量不应该包括该层的内核和偏差吗?还是我遗漏了什么?

提前致谢。

解决方法

如果你调用它,它会“构建”它并初始化权重:

rb(np.random.rand(1,64,16))

for variable in rb.conv2d.trainable_variables:
    print(variable.name)
conv2d/kernel:0
conv2d/bias:0

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。