对于深度学习领域,我尤其是新手,尤其是Keras。在这里,我有一个简单的分类问题,我不知道如何解决。我不了解分类的一般过程,例如将输入数据转换为张量,标签等。
假设我们有1, 2, 3
这三个类。
有一系列类别需要分类为这些类别之一。数据集例如
1, 1, 1, 2
被标记为2
2, 1, 3, 3
被标记为1
3, 1, 2, 1
被标记为3
以此类推。
这意味着输入数据集将是
[[1, 1, 1, 2],
[2, 1, 3, 3],
[3, 1, 2, 1]]
,标签将为
[[2],
[1],
[3]]
现在,我确实了解的一件事是对类进行一次热编码。因为我们有三个类,所以每个1
都将转换为[1, 0, 0]
,2
将是[0, 1, 0]
,而3
将是[0, 0, 1]
。转换上面的示例将得到3 x 4 x 3的数据集,以及3 x 1 x 3的标签。
我了解的另一件事是,最后一层应该是softmax层。这样,如果出现测试数据(例如[1, 2, 3, 4]
),它将被软最大化并计算出属于1类,2类或3类的序列的概率。
我是对的吗?如果是这样,您能给我解释/举例说明这些序列的分类过程吗?
谢谢。
答案 0 :(得分:1)
以下是您似乎要问的一些澄清。
0
,则单个预测可能类似于[0.9714,0.01127,0.01733]
。None
。例如。网络的最后一层输出形状可以写成(None, 3)
。categorical_crossentropy
损失函数。Keras顺序示例
model = Sequential()
model.add(InputLayer(input_shape=(4,))) # sequence of length four
model.add(Dense(3, activation='softmax')) # three possible classes
具有Keras功能的示例
input_tensor = Input(shape=(4,))
x = Dense(3, activation='softmax')(input_tensor)
model = Model(input_tensor, x)
在第一功能层(顺序或功能)中包括输入张量形状的示例:
model = Sequential()
model.add(Dense(666, activation='relu', input_shape=(4,)))
model.add(Dense(3, activation='softmax'))
希望有帮助!