问题描述
我正在尝试使用胶囊网络进行二进制文本分类。我使用预训练的快速文本词嵌入来矢量化我的数据集
,这是我的模型定义
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 (将#修改为@)