gpt4 book ai didi

python - keras sparse_categorical_crossentropy 损失函数输出形状不匹配

转载 作者:太空宇宙 更新时间:2023-11-03 11:19:56 26 4
gpt4 key购买 nike

我有一个包含 3570 个标签的数据集。当我使用 sparse_categorical_crossentropy 作为损失函数时,输出形状不匹配。

model = Sequential()
model.add(Dense(1024, input_dim=79, activation='relu'))
model.add(Dense(2048, activation='relu'))
model.add(Dense(3570, activation='sigmoid'))

model.compile(loss='sparse_categorical_crossentropy',
optimizer='rmsprop',
metrics=['accuracy'])
model.fit(x_train, y_train,
epochs=10,
batch_size=1,
validation_data=(x_valid, y_valid))

输出是ValueError:检查模型目标时出错:预期 dense_42 具有形状 (None, 1) 但得到形状为 (1055, 3570) 的数组

然后我找到这个issue#2444并使用 np.expand_dims(y, -1) 更改代码。但是仍然有错误。

model = Sequential()
model.add(Dense(1024, input_dim=79, activation='relu'))
model.add(Dense(2048, activation='relu'))
model.add(Dense(3570, activation='sigmoid'))

model.compile(loss='sparse_categorical_crossentropy',
optimizer='rmsprop',
metrics=['accuracy'])
model.fit(x_train, np.expand_dims(y_train, -1),
epochs=10,
batch_size=1,
validation_data=(x_valid, np.expand_dims(y_valid, -1)))

错误ValueError:检查模型目标时出错:预期 dense_45 具有 2 个维度,但得到形状为 (1055, 3570, 1) 的数组

我应该如何更改代码?

最佳答案

loss='sparse_categorical_crossentropy' 不适用于单热编码,而是整数目标。您可能需要一个“Dense(...”作为输出层并直接使用 y_train。

关于python - keras sparse_categorical_crossentropy 损失函数输出形状不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45047266/

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