gpt4 book ai didi

python - 模型返回错误 - ValueError : logits and labels must have the same shape ((None, 18) vs (None, 1))

转载 作者:行者123 更新时间:2023-12-04 16:39:37 24 4
gpt4 key购买 nike

我正在使用基于 keras 的多标签分类器。我创建了一个加载训练和测试数据的函数,然后我在函数本身内处理/拆分 X/Y。运行模型时出现错误,但不太确定含义:

这是我的代码:

def KerasClassifer(df_train, df_test):
X_train = df_train[columnType].copy()
y_train = df_train[variableToPredict].copy()
labels = y_train.unique()
print(X_train.shape[1])
#using keras to do classification
from tensorflow import keras
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Dropout, Activation
from tensorflow.keras.optimizers import SGD

model = Sequential()
model.add(Dense(5000, activation='relu', input_dim=X_train.shape[1]))
model.add(Dropout(0.1))
model.add(Dense(600, activation='relu'))
model.add(Dropout(0.1))
model.add(Dense(len(labels), activation='sigmoid'))

sgd = SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov=True)
model.compile(loss='binary_crossentropy',
optimizer=sgd)

model.fit(X_train, y_train, epochs=5, batch_size=2000)

preds = model.predict(X_test)
preds[preds>=0.5] = 1
preds[preds<0.5] = 0

score = model.evaluate(X_test, y_test, batch_size=2000)
score

这是我的数据的属性(如果有帮助的话):

x train shape  (392436, 109)
y train shape (392436,)
len of y labels 18

如何修复代码以避免此错误?

最佳答案

如果您有 18 个类别,则 y_train 的形状应为 (392436, 18)。您可以为此使用 tf.one_hot:

import tensorflow as tf

y_train = tf.one_hot(y_train, depth=len(labels))

如果您从一列中获取值,我怀疑这不是“多标签”,而是多类。一个样本真的可以属于多个类别吗?如果没有,您还需要更改其他一些内容。例如,您需要 softmax 激活:

model.add(Dense(len(labels), activation='softmax'))

还有分类交叉熵损失:

model.compile(loss='categorical_crossentropy', optimizer=sgd)

关于python - 模型返回错误 - ValueError : logits and labels must have the same shape ((None, 18) vs (None, 1)),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63690545/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com