我正在关注此tutorial on image classification using TensorFlow。
我确实需要对某些部分做进一步的解释。
第一个问题是,我的意思是说第一个Pickle X
包含我的图像数据,而Pickle y
包含我的数据的类名吗?
X中的引用如何与Y中的引用联系起来?
我的主要问题是文章说:
在第37行中,将Dense()的参数修改为类的数量 你有。这是神经网络可能输出的数量。
如果我有3个班级,是否应该将每个Dense()
更改为Dense(3)
?
这是否意味着更改以下所有引用:
model.add(Dense(x))
model.add(Dense(x))
在此代码中的3个地方编写。我要更改此条目的最后一项吗?每个人做什么?
结论是,对于3个类,以下代码是否适用于最后一层?
# The output layer with 3 neurons, for 3 classes
model.add(Dense(3))
model.add(Activation("softmax"))
答案 0 :(得分:0)
在您的情况下,应仅将密集输出层中的节点数设置为3,因为您有3个类。
对于多类分类(具有互斥类),您通常需要:
'categorical_crossentropy'
或'sparse_categorical_crossentropy'
(使用Keras时)注意:
两种损失之间的差是输出。分类交叉熵为每个样本返回一个向量,该向量的大小与您的类数相同,其中第k个值表示样本属于k类的概率
另一方面,稀疏损失将直接返回预测类,作为每个样本的整数标签。
例如:
[[0.5, 0.3, 0.2], [0.2, 0.5, 0.3]] # Categorical
[0, 1] # Sparsed