我有一个多标签分类问题,我正试图用Tensorflow 2神经网络解决这个问题
问题-我试图预测一个cause
及其对应的severity
。我可以有n
个原因,每个原因可能有m
个严重性
为了简单起见
我写了下面的代码-
import tensorflow as tf
from tensorflow.keras.layers import Dense, Flatten, Dropout
from tensorflow.keras import Model
from tensorflow.keras.callbacks import ModelCheckpoint
def get_model_multilabel(n_inputs, n_outputs):
opt = tf.keras.optimizers.SGD(lr=0.01, momentum=0.9)
model = tf.keras.models.Sequential([
#input layer
Dense(10, input_dim=n_inputs, kernel_initializer='he_uniform', activation='relu'),
## two hidden layer
Dense(10, kernel_initializer='he_uniform', activation='relu'),
Dropout(0.2),
Dense(5, kernel_initializer='he_uniform', activation='relu'),
Dropout(0.2),
## output layer
Dense(n_outputs, activation='sigmoid')
])
model.compile(loss='binary_crossentropy', optimizer=opt, metrics=['accuracy'])
return model
n_inputs = 4 # because we have 4 features
n_outputs = 4 # because we have 4 labels
mlmodel = get_model_multilabel(n_inputs, n_outputs)
## train the model
mlmodel.fit(X_train,y_train, epochs=50, batch_size=32, validation_split = 0.2, callbacks=callbacks_list)
X_train.shape
是(1144, 4)
和
y_train.shape
是(1144,)
注意最后一层中的sigmoid
激活和binary_crossentropy
丢失函数,因为我正在尝试对多标签分类问题建模。参考How do I implement multilabel classification neural network with keras
当我训练这个时,它会抛出错误
ValueError: logits and labels must have the same shape ((None, 4) vs (None, 1))
不知道我在这里错过了什么。请建议
您的Y_序列的形状不正确,它应该是
(1144,n_outputs)
,而不是(1144,)
,如果重新整形,则是(1144,1)
。您的代码不知道样本数,因此它成为(None,1)
。它必须与输出形状或(None,4)
匹配。您加载的数据不正确相关问题 更多 >
编程相关推荐