[Chapter 14] ResidualUnit
- 主要語言
- Jupyter Notebook
- 星號
- 30k
- 分支
- 13.1k
- PR 合併指標
- 30 天內沒有已合併 PR
描述
I would like to implement a clean custom residual unit. Aurélien provides this one:
```
from tensorflow import keras
from functools import partial
DefaultConv2D = partial(keras.layers.Conv2D, kernel_size=3, strides=1, padding="SAME", use_bias=False)
class ResidualUnit(keras.layers.Layer):
def __init__(self, filters, strides=1, activation="relu", **kwargs):
super().__init__(**kwargs)
self.activation = keras.activations.get(activation)
self.main_layers = [
DefaultConv2D(filters, strides=strides),
keras.layers.BatchNormalization(),
self.activation,
DefaultConv2D(filters),
keras.layers.BatchNormalization()
]
self.skip_layers = []
if strides > 1:
self.skip_layers = [
DefaultConv2D(filters, kernel_size=1, strides=strides),
keras.layers.BatchNormalization()
]
def call(self, inputs):
Z = inputs
for layer in self.main_layers:
Z = layer(Z)
skip_Z = inputs
for layer in self.skip_layers:
skip_Z = layer(skip_Z)
return self.activation(Z + skip_Z)
```
The issue with this custom layer is there are no get_config() method.
I tried to implement one:
```
class ResidualUnit(keras.layers.Layer):
[...]
def get_config(self):
base_config = super().get_config()
return {**base_config,
"main_layers": self.main_layers,
"skip_layers": self.skip_layers,
"activation": self.activation}
```
But when I call the get_config method I have an error message : TypeError: can't pickle _thread.RLock objects.
Can someone help me with this ?
貢獻指南
這個儲存庫沒有索引到貢獻指南
評估
這個 Issue 還沒有評估資料。