[英]Why is keras custom layer producing nonsense output shape in summary
我在 keras 中定义了一个自定义层:
import keras.backend as K
from keras.layers import Input
from keras.models import Model
import keras
class MyLayer(keras.layers.Layer):
def __init__(self):
super(MyLayer, self).__init__()
def call(self, emb):
emb = K.repeat_elements(emb, 6, 2)
return emb
inputs = Input(shape=(2,1))
outputs = MyLayer()(inputs)
print(outputs.shape)
model = Model(inputs=inputs, outputs=outputs)
model.summary()
(?, 2, 6)
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
input_16 (InputLayer) (None, 2, 1) 0
_________________________________________________________________
my_layer_8 (MyLayer) (None, 2, 1) 0
=================================================================
Total params: 0
Trainable params: 0
Non-trainable params: 0
正如预期的那样,model.output.shape 是 (None, 2, 6),但在总结中它说 output 1, 2 形状是我的层。 为什么?
覆盖层中的 compute_output_shape 方法:
class MyLayer(keras.layers.Layer):
def __init__(self):
super(MyLayer, self).__init__()
def call(self, emb):
emb = K.repeat_elements(emb, 6, 2)
return emb
def compute_output_shape(self, input_shape):
return (None, input_shape[1], 6)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.