Keras中的多分类损失函数用法categorical_crossentropy
时间: 2023-06-15 17:06:01 浏览: 67
在Keras中,当我们需要进行多分类任务时,可以使用`categorical_crossentropy`作为损失函数。`categorical_crossentropy`是一种常用的多分类损失函数,它适用于类别排他(即每个样本只属于一类)的分类任务。
使用`categorical_crossentropy`时,我们需要将标签进行One-Hot编码,即将一个标签转换成一个向量,向量的长度等于类别的数量,向量中只有一个元素为1,其余元素为0。例如,对于一个3分类问题,如果一个样本的真实标签是2,则对应的One-Hot编码为[0, 0, 1]。
下面是在Keras中使用`categorical_crossentropy`的示例代码:
```python
from keras.models import Sequential
from keras.layers import Dense
from keras.losses import categorical_crossentropy
from keras.optimizers import SGD
import numpy as np
# 构建模型
model = Sequential()
model.add(Dense(units=64, activation='relu', input_dim=100))
model.add(Dense(units=10, activation='softmax'))
# 编译模型
model.compile(loss=categorical_crossentropy,
optimizer=SGD(lr=0.01),
metrics=['accuracy'])
# 准备数据
x_train = np.random.random((1000, 100))
y_train = np.random.randint(10, size=(1000, 1))
y_train = np.eye(10)[y_train.flatten()]
# 训练模型
model.fit(x_train, y_train, epochs=5, batch_size=32)
```
在上面的代码中,我们首先构建了一个简单的神经网络模型,包括一个输入层、一个隐藏层和一个输出层。输出层使用`softmax`激活函数,可以将输出转换成概率分布。然后,我们使用`categorical_crossentropy`作为损失函数,使用随机梯度下降(SGD)优化器进行优化。最后,我们准备了一些随机的训练数据,并训练了模型5个epochs。