问题描述
我正在尝试在我的 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