即使输出层有任何大小,keras神经网络如何找到要归类的类?

拉富

我有一个带有二进制类(对或错)的数据样本。神经网络赋予每个班级权重,最大值将决定归属的班级。但是,即使输出层没有适当数量的神经元,为什么角膜也能起作用?(在我的情况下,=类数= 2,即0或1)。

import keras
from model import *

X_train, X_test, y_train, y_test = train_test_split(df_features, df_labels, test_size=0.25, random_state=10)

model = keras.Sequential([
    keras.layers.Flatten(input_shape=(len(X_test.columns),)),
    keras.layers.Dense(128, activation='relu'),
    keras.layers.Dense(128, activation='softmax') # Shouldn't be two here ?
])

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

# len(y_train.columns) == 1
history = model.fit(X_train, y_train, epochs=100, validation_split=0.25)

scores = model.evaluate(X_test, y_test, verbose=0)

print(model.metrics_names)
print('scores=', scores)

假设:它在末尾添加了一个隐式层,或者它忽略了某些神经元,或者完全是其他东西?

编辑:添加数据

>>> print(y_train)
[0 0 0 ... 0 1 0]

>>> print(y_test)
      Class
1424      0
3150      1
2149      0
1700      0
4330      0
4200      0
# etc, ~1000 entries
>>> print('len(y_train)=', len(y_train))
len(y_train)= 2678
>>> print('len(y_test)=', len(y_test))
len(y_test)= 893
阿克塞·塞加尔(Akshay Sehgal)

我认为问题在于您的损失如何sparse_cartegorical_crossentropy运作。这种损失(与相对categorical_crossentropy假定y_actual将作为标签编码格式而不是单热编码格式提供这意味着,如果要预测5个类别,则将提供y_actual数组,[0,2,4,1,2,2,3,3,1...]其中1-D数组中的每个值代表5个可能类别中的一个类别编号。

让我们直接从tf2文档中查看有关此损失的独立用法的示例-

y_true = [1, 2] #class number from 0 to 2
y_pred = [[0.05, 0.95, 0], [0.1, 0.8, 0.1]] #3 class classification output
loss = tf.keras.losses.sparse_categorical_crossentropy(y_true, y_pred)
assert loss.shape == (2,)
loss.numpy()
[0.0513, 2.253]

在您的情况下,这意味着当模型返回128维输出时,它将假定此分类问题中有128个类。但是,由于损失为sparse_categorical_crossentropy,因此它将等待接收0-127之间的单个数字,然后将其用于计算其错误。

由于在所有情况下都始终将其设置为0或1,因此假定样本所属的实际类仅是128个类中的0或1类,而其他所有类都不是。因此,它可以运行代码,但是它是有缺陷的,因为它假定它属于128个其他类中的一个,而不是作为二进制类读取y_train(或y_test获得的一位数字

print(y_train)
[0 0 0 ... 0 1 0]

#The first 0 here, is being considered as one class out of 128 other classes. 
#The code would still work if u changed that to say 105 instead of 0.
#Similarly for all the other 0s and 1s. 

希望这是有道理的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何理解多类神经网络的输出

来自分类Dev

如何计算神经网络隐藏层中神经元的目标输出?

来自分类Dev

这两种在Keras中添加神经网络层的方式有什么区别?

来自分类Dev

这两种在Keras中添加神经网络层的方式有什么区别?

来自分类Dev

神经网络输出

来自分类Dev

如何在神经网络的输出层计算二阶导数?

来自分类Dev

如何在神经网络的输出层计算二阶导数?

来自分类Dev

神经网络回归:缩放输出还是使用线性层?

来自分类Dev

如何改善神经网络输出?

来自分类Dev

在实现具有多个输出的神经网络时遇到keras的错误

来自分类Dev

如果不知道游戏的目标输出,我将如何找到神经网络的成本?

来自分类Dev

输出量的大小(卷积神经网络)

来自分类Dev

如何通过辍学层改善神经网络?

来自分类Dev

如何在神经网络中删除整个隐藏层?

来自分类Dev

如何初始化 1 层神经网络参数?

来自分类Dev

提高神经网络输出中负类的精度

来自分类Dev

使用Keras的神经网络

来自分类Dev

有什么方法可以改变卷积神经网络中完全连接层的默认输出形状吗?

来自分类Dev

神经网络的大量输出

来自分类Dev

Keras:如何将输入直接输入到神经网络的其他隐藏层中?

来自分类Dev

如何制作具有回归和分类输出的神经网络?

来自分类Dev

如何设置神经网络使其输出只有 0 或 1?

来自分类Dev

具有连续/浮点输出的tensorflow神经网络?

来自分类Dev

具有连续/浮点输出的tensorflow神经网络?

来自分类Dev

使神经网络具有分层输出是否更好?

来自分类Dev

是否可以训练具有“拆分”输出的神经网络

来自分类Dev

消除神经网络层的偏差

来自分类Dev

神经网络中的“层”是什么

来自分类Dev

设计神经网络的隐藏层

Related 相关文章

  1. 1

    如何理解多类神经网络的输出

  2. 2

    如何计算神经网络隐藏层中神经元的目标输出?

  3. 3

    这两种在Keras中添加神经网络层的方式有什么区别?

  4. 4

    这两种在Keras中添加神经网络层的方式有什么区别?

  5. 5

    神经网络输出

  6. 6

    如何在神经网络的输出层计算二阶导数?

  7. 7

    如何在神经网络的输出层计算二阶导数?

  8. 8

    神经网络回归:缩放输出还是使用线性层?

  9. 9

    如何改善神经网络输出?

  10. 10

    在实现具有多个输出的神经网络时遇到keras的错误

  11. 11

    如果不知道游戏的目标输出,我将如何找到神经网络的成本?

  12. 12

    输出量的大小(卷积神经网络)

  13. 13

    如何通过辍学层改善神经网络?

  14. 14

    如何在神经网络中删除整个隐藏层?

  15. 15

    如何初始化 1 层神经网络参数?

  16. 16

    提高神经网络输出中负类的精度

  17. 17

    使用Keras的神经网络

  18. 18

    有什么方法可以改变卷积神经网络中完全连接层的默认输出形状吗?

  19. 19

    神经网络的大量输出

  20. 20

    Keras:如何将输入直接输入到神经网络的其他隐藏层中?

  21. 21

    如何制作具有回归和分类输出的神经网络?

  22. 22

    如何设置神经网络使其输出只有 0 或 1?

  23. 23

    具有连续/浮点输出的tensorflow神经网络?

  24. 24

    具有连续/浮点输出的tensorflow神经网络?

  25. 25

    使神经网络具有分层输出是否更好?

  26. 26

    是否可以训练具有“拆分”输出的神经网络

  27. 27

    消除神经网络层的偏差

  28. 28

    神经网络中的“层”是什么

  29. 29

    设计神经网络的隐藏层

热门标签

归档