繁体   English   中英

为什么keras自定义层产生废话output形状总结

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM