tensorflow中的類tf.keras.layers.Layer可用於創建神經網絡中的層,使用說明如下。
使用tf.keras.layers.Layer創建自定義的層
import tensorflow as tf
class MyLayer(tf.keras.layers.Layer):
def __init__(self, num_outputs):
super(MyLayer, self).__init__()
self.num_outputs = num_outputs
def build(self, input_shape):
self.kernel = self.add_variable("kernel",
shape=[int(input_shape[-1]),
self.num_outputs])
self.bias = self.add_variable("bias",
shape=[self.num_outputs])
def call(self, input):
output = tf.matmul(input, self.kernel) + self.bias
output = tf.nn.sigmoid(output)
return output
創建一個層
layer1 = MyLayer(3) # 創建一個由3個神經元構成的層
layer1.build((2,)) # 設定神經層的輸入的維度是2
print(layer1.kernel) #打印接入該神經層的權重矩陣
print(layer1.bias) #打印該層各神經元的偏置
創建一個張量並輸入該層
a = tf.constant([[0.1,0.2],[0.3,0.4]]) # 創建一個張量
print(layer1.call(a)) # 將張量輸入該層
參考文獻:
tensorflow2.0 - 自定義layer