这个tensorflow示例正确吗-我的Dense参数正确吗?

时间:2019-07-04 21:32:06

标签: python tensorflow image-processing artificial-intelligence

我正在关注此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"))

1 个答案:

答案 0 :(得分:0)

摘要

在您的情况下,应仅将密集输出层中的节点数设置为3,因为您有3个类。
对于多类分类(具有互斥类),您通常需要:

  • 将输出层的激活功能设置为softmax
  • 将损失函数更改为'categorical_crossentropy''sparse_categorical_crossentropy'(使用Keras时)

注意:
两种损失之间的差是输出。分类交叉熵为每个样本返回一个向量,该向量的大小与您的类数相同,其中第k个值表示样本属于k类的概率
另一方面,稀疏损失将直接返回预测类,作为每个样本的整数标签。

例如:

[[0.5, 0.3, 0.2], [0.2, 0.5, 0.3]] # Categorical
[0, 1]  # Sparsed