Python ValueError:尺寸必须为4,但对于';为3;胶囊2/转座4';(操作:';转置';)输入形状:[?,10,16,16],[3]
我正在尝试使用胶囊网络进行二进制文本分类。我使用预先训练过的fasttext单词嵌入来矢量化我的数据集 ,这是我的模型定义Python ValueError:尺寸必须为4,但对于';为3;胶囊2/转座4';(操作:';转置';)输入形状:[?,10,16,16],[3],python,machine-learning,text-classification,Python,Machine Learning,Text Classification,我正在尝试使用胶囊网络进行二进制文本分类。我使用预先训练过的fasttext单词嵌入来矢量化我的数据集 ,这是我的模型定义 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, recur
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].