微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ValueError:尺寸必须为4,但对于“ capsule_2 / transpose_4”运算符:“ Transpose”,其输入形状为[?,10,16,16],[3]为3

如何解决ValueError:尺寸必须为4,但对于“ capsule_2 / transpose_4”运算符:“ Transpose”,其输入形状为[?,10,16,16],[3]为3

我正在尝试使用胶囊网络进行二进制文本分类。我使用预训练的快速文本词嵌入来矢量化我的数据集

,这是我的模型定义

 gru_len = 128
    Routings = 5
    Num_capsule = 10
    Dim_capsule = 16
    dropout_p = 0.
    rate_drop_dense = 0.3

def get_model(embedding_matrix,sequence_length,dropout_rate,recurrent_units,dense_size):
    input1 = Input(shape=(sequence_length,))
    embed_layer = Embedding(embedding_matrix.shape[0],embedding_matrix.shape[1],weights=[embedding_matrix],trainable=False)(input1)
    embed_layer = SpatialDropout1D(rate_drop_dense)(embed_layer)

    x = Bidirectional(
        GRU(gru_len,activation='relu',dropout=dropout_p,recurrent_dropout=dropout_p,return_sequences=True))(embed_layer)
    capsule = Capsule(num_capsule=Num_capsule,dim_capsule=Dim_capsule,routings=Routings,share_weights=True)(x)
    capsule = Flatten()(capsule)
    capsule = Dropout(dropout_p)(capsule)
    output = Dense(1,activation='sigmoid')(capsule)
    model = Model(inputs=input1,outputs=output)
    model.compile(
        loss='binary_crossentropy',optimizer='adam',metrics=['accuracy'])
    model.summary()
    return model

但是当训练模型时,出现了一个错误错误日志如下:

ValueError: Dimension must be 4 but is 3 for 'capsule_3/transpose_4' (op: 'Transpose') with input shapes: [?,10,16,16],[3].

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。