gpt4 book ai didi

tensorflow - 使用 Keras 进行多输出分类

转载 作者:行者123 更新时间:2023-12-02 20:21:48 26 4
gpt4 key购买 nike

我正在使用 keras 构建多输出分类模型。我的数据集是这样的

[x1,x2,x3,x4,y1,y2,y3]

x1,x2,x3 是特征,y1,y2,y3 是标签,y1,y2,y3 是多类。

我已经构建了一个模型(我忽略了一些隐藏层):

def baseline_model(input_dim=23,output_dim=3):
model_in = Input(shape=(input_dim,))
model = Dense(input_dim*5,kernel_initializer='uniform',input_dim=input_dim)(model_in)
model = Activation(activation='relu')(model)
model = Dropout(0.5)(model)

...................

model = Dense(output_dim,kernel_initializer='uniform')(model)
model = Activation(activation='sigmoid')(model)

model = Model(model_in,model)
model.compile(optimizer='adam',loss='binary_crossentropy', metrics=['accuracy'])
return model

然后我尝试使用keras的方法使其支持分类:

estimator = KerasClassifier(build_fn=baseline_model)
estimator.fit()
estimator.predict(df[0:10])

但是我发现结果不是多输出的,只输出一维。

[0,0,0,0,0,0,0,0,0,0]

那么对于多输出分类问题,我们能不能用KerasClassifier函数来学习呢?

最佳答案

您不需要将模型包装在 KerasClassifier 中。该包装器使您可以将 Keras 模型与 Scikit-Learn 一起使用。模型的类型(分类器、回归、多类分类器等)最终由模型最后一层的形状和激活决定。

您可以简单地使用 Keras 的 model.fit() 函数。确保将数据传递到函数中。您可以在此处查看有关拟合功能的更多信息:https://keras.io/models/model/#fit

您的损失也设置为binary_crossentropy。对于多类问题,您需要使用 categorical_crossentropy。

model.compile(optimizer='adam',loss='categorical_crossentropy', metrics=['accuracy'])

据我所知,这个模型实际上并不是 Keras 所说的多输出。通过多输出,您尝试从多个不同层获取输出,并可能对它们应用不同的损失函数。

根据您问题中的设置,如果您愿意,您可以使用 Keras 顺序模型而不是功能模型。如果可以的话,Keras 建议使用顺序模型,因为它更简单。 https://keras.io/getting-started/sequential-model-guide/

关于tensorflow - 使用 Keras 进行多输出分类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51212397/

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