1. 程式人生 > 實用技巧 >洛谷 P1396 營救(二分答案)

洛谷 P1396 營救(二分答案)

2.1 base layer

layer實了輸入tensor和輸出tensor的操作類,以下為base layer的5個方法,自定義layer只要重寫這些方法就可以了。

  • init(): 定義自定義layer的一些屬性
  • build(self, input_shape):定義layer需要的權重weights
  • call(self, *args, **kwargs):layer具體的操作,會在呼叫自定義layer自動執行
  • get_config(self):layer初始化的配置,是一個字典dictionary。
  • compute_output_shape(self,input_shape):計算輸出tensor的shape

2.2 例子

# 標準化層
class InstanceNormalize(Layer):
    def __init__(self, **kwargs):
        super(InstanceNormalize, self).__init__(**kwargs)
        self.epsilon = 1e-3
            

    def call(self, x, mask=None):
        mean, var = tf.nn.moments(x, [1, 2], keep_dims=True)
        return tf.div(tf.subtract(x, mean), tf.sqrt(tf.add(var, self.epsilon)))

                                                 
    
def compute_output_shape(self,input_shape): return input_shape # 呼叫 inputs = keras.Input(shape=(None, None, 3)) x = InstanceNormalize()(inputs)