如何用字符串输出训练神经网络

Posted

技术标签:

【中文标题】如何用字符串输出训练神经网络【英文标题】:How to train a neural network with a string output 【发布时间】:2020-04-28 15:03:48 【问题描述】:

我对神经网络非常陌生,但我正在做一个项目,其中我们有一个给定的数据集,其中包含一些花瓣尺寸和它的种类,我必须使用它来训练一个神经网络,但之前的所有我所做的神经网络都是数字,没有要处理的字符串,所以现在我不知道如何使用物种名称训练神经网络,如果我可以使用带有物种名称的数组或者我需要分配一个整数到每个不同的物种,然后用它来训练神经网络。

【问题讨论】:

听起来您需要指南或教程,而 Stack Overflow 不需要。请参阅:help center. 【参考方案1】:

后者 - 您需要对分类变量进行编码,即为每个字符串(或物种)分配一个数字标签(整数),以便能够使用它来训练神经网络。

【讨论】:

谢谢我刚刚用编码弄明白了【参考方案2】:

神经网络只能处理数值,因此每种类型的数据都需要转换为数值。通常,它们存储在张量中(因此得名 TensorFlow)。

假设您正在进行 Iris 分类,以下是如何将字符串标签转换为 int 标签:

labels = 'Iris-setosa': 0, 'Iris-versicolor': 1, 'Iris-virginica': 2
target = [labels[label] for label in target]
target = keras.utils.to_categorical(target)

目标最初是Pandas 数据帧。

【讨论】:

但是在我用这样的数据框进行预测之后,我得到了一个包含 3 列的数组和一堆看起来介于 0 和 2 之间的浮点值,所以我猜这些是它们的可能性值某个物种是对的吗?如果是这样,有没有办法获取该数组并将这些浮点数转换回与成为某个物种的可能性相对应的标签 是的,就是当你想使用softmax和argmax的时候。 Softmax 是一个特定的激活函数,将每个值缩放到从 0 到 1 的范围内,并使所有值总和为 1。这样,这些值可以用作输入属于某个类的概率。要获取标签,您将使用 argmax,它返回具有最高激活(由 softmax 计算)的节点的索引。这为您提供了一个整数,您可以将其用作标签字典的索引。

以上是关于如何用字符串输出训练神经网络的主要内容,如果未能解决你的问题,请参考以下文章

如何用小数据集训练神经网络或如何在没有人工干预的情况下制作大数据集?

如何用神经网络实现连续型变量的回归预测?

如何用小样本训练高性能深度网络

请问在matlab中,如何用bp神经网络进行建模,节点的选取有啥规律吗?

如何用matlab实现数字手势的识别

如何用Paddle Fluid API搭建一个简单的神经网络?这里有一份编程指南