以下代码在TensorFlow版本1.13下运行通过。
tf.layers.Layer类是tf.layers里所有层都继承的基类,实现了通用的基础功能。用户只需要实例化它,就可以直接调用得到的实例。
Layer的子类一般这样子实现:
__init__():先初始化父类。然后在成员变量中保存配置。
build():一般用于初始化层内的参数和变量。在调用call()方法前,类会自动调用该方法。在该方法末尾需要设置self.built = True,保证build()方法只被调用一次。
call():用于定义层对输入张量的实际操作。
下面是我们自定义一个全连接层的例子。
# Python3
import tensorflow as tf
from tensorflow.python.framework import tensor_shape
class DenseLayer(tf.layers.Layer):
"""定义全连接层"""
def __init__(self, hidden_size, bias=None, activation=None):
super().__init__() # 初始化父类
self.hidden_size = hidden_size # 保存配置
self.bias = bias
self.activation = activation
def build(self, input_shape):
self.W = self.add_vari