小编xab*_*dax的帖子

Keras 中自定义层的 trainable_variables 属性返回空列表

我尝试构建自己的自定义层,tensorflow/keras强制该层对称,最终得到的结果如下:

import tensorflow as tf
from tensorflow.python.framework.ops import enable_eager_execution
enable_eager_execution()

class MyDenseLayer(tf.keras.layers.Layer):
    def __init__(self, num_outputs):
        super(MyDenseLayer, self).__init__()
        self.num_outputs = num_outputs

    def build(self, input_shape):
        X = tf.random.uniform([int(input_shape[-1]),self.num_outputs],minval=0,maxval=1,dtype=tf.dtypes.float32,)
        k = tf.Variable(X, name="kernel")
        self.kernel = 0.5 * (k+tf.transpose(k))

    def call(self, input):
        return tf.matmul(input, self.kernel)

layer = MyDenseLayer(5)
print(layer(tf.ones([3, 5])))
print(layer.trainable_variables)
Run Code Online (Sandbox Code Playgroud)

到目前为止,一切都很好。我不明白的是:为什么最后一行

print(layer.trainable_variables)
Run Code Online (Sandbox Code Playgroud)

给我一个空列表:

[]
Run Code Online (Sandbox Code Playgroud)

我认为这layer.trainable_variables会告诉我我的矩阵是什么样子,这样我就可以检查它是否对称。

python machine-learning keras tensorflow keras-layer

6
推荐指数
1
解决办法
3505
查看次数