神经网络的最后一层应包含多少个神经元?

用户13959036

我使用以下代码将电影评论分为三类(负数为-1,中性数为0和1为正数)。但是,对于三类分类问题,最后一层中只有一个输出神经元是真的吗?

import tensorflow as tf
import numpy as np
import pandas as pd
import numpy as K

csvfilename_train = 'train(cleaned).csv'
csvfilename_test = 'test(cleaned).csv'

# Read .csv files as pandas dataframes
df_train = pd.read_csv(csvfilename_train)
df_test = pd.read_csv(csvfilename_test)

train_sentences  = df_train['Comment'].values
test_sentences  = df_test['Comment'].values

# Extract labels from dataframes
train_labels = df_train['Sentiment'].values
test_labels = df_test['Sentiment'].values

vocab_size = 10000
embedding_dim = 16
max_length = 30
trunc_type = 'post'
oov_tok = '<OOV>'

from tensorflow.keras.preprocessing.text import Tokenizer
from tensorflow.keras.preprocessing.sequence import pad_sequences

tokenizer = Tokenizer(num_words = vocab_size, oov_token = oov_tok)
tokenizer.fit_on_texts(train_sentences)
word_index = tokenizer.word_index
sequences = tokenizer.texts_to_sequences(train_sentences)
padded = pad_sequences(sequences, maxlen = max_length, truncating = trunc_type)

test_sequences = tokenizer.texts_to_sequences(test_sentences)
test_padded = pad_sequences(test_sequences, maxlen = max_length)

model = tf.keras.Sequential([
    tf.keras.layers.Embedding(vocab_size, embedding_dim, input_length = max_length),
    tf.keras.layers.Flatten(),
    tf.keras.layers.Dense(6, activation = 'relu'),
    tf.keras.layers.Dense(1, activation = 'sigmoid'),
])
model.compile(loss = 'binary_crossentropy', optimizer = 'adam', metrics = ['accuracy'])

num_epochs = 10
model.fit(padded, train_labels, epochs = num_epochs, validation_data = (test_padded, test_labels))

当我改变tf.keras.layers.Dense(1, activation = 'sigmoid')tf.keras.layers.Dense(2, activation = 'sigmoid')它给了我下面的错误

---> 10 model.fit(padded, train_labels, epochs = num_epochs, validation_data = (test_padded,test_labels))
     ValueError: logits and labels must have the same shape ((None, 2) vs (None, 1))
尼古拉斯·格维斯(Nicolas Gervais)

如果要在3个类别之间进行分类,则应该有3个神经元。

另外,'softmax'假设所有观测值仅在一个类中,则应将激活用于最后一层。

接下来,'sparse_categorical_crossentropy'由于您的输入不是一键编码的,因此应该使用像这样[0,0,1], [0,1,0], [1,0,0]目标是可选的,您也可以选择[1, 2, 0, 1, 2, 1, 0]

最后,您的目标应该是,[0, 1, 2]而不是,[-1, 0, 1]所以我建议您在标签上加1。

test_labels = df_test['Sentiment'].values + 1

如果标签[-1, 0, 1]不是,则会发生这种情况[0, 1, 2]

import tensorflow as tf

sparse_entropy = tf.losses.SparseCategoricalCrossentropy()

a = tf.convert_to_tensor([[-1., 0., 1.]]) #+ 1
b = tf.convert_to_tensor([[.4, .2, .4], [.1, .7, .2], [.8, .1, .1]])

sparse_entropy(a, b)
nan

如果取消注释+1,它将标签转换为[0, 1, 2],则可以使用:

<tf.Tensor: shape=(), dtype=float32, numpy=1.1918503>

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Matlab中创建一个具有一层感知器神经元隐藏层和一层径向基础神经元隐藏层的神经网络?

来自分类Dev

为什么神经网络的隐藏层通常包含64、128、256个神经元?

来自分类Dev

对于神经网络(pytorch)中的每一层,应该有多少个偏差?

来自分类Dev

神经网络 - 仅使用输出层中的一个神经元预测 MNIST 数字

来自分类Dev

什么时候使用仅包含一个输出神经元的神经网络,何时使用多个输出神经元?

来自分类Dev

是2个神经元的多层神经网络,就像1个神经元一样

来自分类Dev

神经网络,神经元最少

来自分类Dev

VGG的每一层有多少神经元进入?

来自分类Dev

pytorch在一层中复制神经元

来自分类Dev

可以在神经网络的最后一层使用relu吗?

来自分类Dev

我应该使用 float 还是 classes 作为神经网络中最后一层的输出?

来自分类Dev

什么是冻结/解冻神经网络中的一层?

来自分类Dev

深度神经网络中有多少个隐藏层

来自分类Dev

Encog神经网络隐藏层中的最佳神经元数量

来自分类Dev

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

来自分类Dev

在Matlab中获取神经网络的神经元权重

来自分类Dev

访问神经网络权重和神经元激活

来自分类Dev

每个神经元的神经网络偏差

来自分类Dev

单神经元神经网络-问题类型?

来自分类Dev

神经网络中神经元的进化

来自分类Dev

训练后使用Tensorflow v2调整神经网络最后一层的偏差项

来自分类Dev

Tensorflow第一层神经元的权重不变

来自分类Dev

torch7:如何连接同一层的神经元?

来自分类Dev

torch7:如何连接同一层的神经元?

来自分类Dev

Caffe如何确定每一层中的神经元数量?

来自分类Dev

Tensorflow第一层神经元的权重不变

来自分类Dev

神经网络模型如何在单个层中为每个神经元学习不同的权重?

来自分类Dev

我怎么知道在我的神经网络上添加一层?

来自分类Dev

循环一层以从神经网络输出执行蒙特卡罗

Related 相关文章

  1. 1

    如何在Matlab中创建一个具有一层感知器神经元隐藏层和一层径向基础神经元隐藏层的神经网络?

  2. 2

    为什么神经网络的隐藏层通常包含64、128、256个神经元?

  3. 3

    对于神经网络(pytorch)中的每一层,应该有多少个偏差?

  4. 4

    神经网络 - 仅使用输出层中的一个神经元预测 MNIST 数字

  5. 5

    什么时候使用仅包含一个输出神经元的神经网络,何时使用多个输出神经元?

  6. 6

    是2个神经元的多层神经网络,就像1个神经元一样

  7. 7

    神经网络,神经元最少

  8. 8

    VGG的每一层有多少神经元进入?

  9. 9

    pytorch在一层中复制神经元

  10. 10

    可以在神经网络的最后一层使用relu吗?

  11. 11

    我应该使用 float 还是 classes 作为神经网络中最后一层的输出?

  12. 12

    什么是冻结/解冻神经网络中的一层?

  13. 13

    深度神经网络中有多少个隐藏层

  14. 14

    Encog神经网络隐藏层中的最佳神经元数量

  15. 15

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

  16. 16

    在Matlab中获取神经网络的神经元权重

  17. 17

    访问神经网络权重和神经元激活

  18. 18

    每个神经元的神经网络偏差

  19. 19

    单神经元神经网络-问题类型?

  20. 20

    神经网络中神经元的进化

  21. 21

    训练后使用Tensorflow v2调整神经网络最后一层的偏差项

  22. 22

    Tensorflow第一层神经元的权重不变

  23. 23

    torch7:如何连接同一层的神经元?

  24. 24

    torch7:如何连接同一层的神经元?

  25. 25

    Caffe如何确定每一层中的神经元数量?

  26. 26

    Tensorflow第一层神经元的权重不变

  27. 27

    神经网络模型如何在单个层中为每个神经元学习不同的权重?

  28. 28

    我怎么知道在我的神经网络上添加一层?

  29. 29

    循环一层以从神经网络输出执行蒙特卡罗

热门标签

归档