是否可以使用 Tensorflow 创建用于输入/输出映射的神经网络?

Posted

技术标签:

【中文标题】是否可以使用 Tensorflow 创建用于输入/输出映射的神经网络?【英文标题】:Is it possible using Tensorflow to create a neural network for input/output mapping? 【发布时间】:2017-02-21 14:46:33 【问题描述】:

我目前正在使用 tensorflow 创建一个神经网络,该网络复制了在给定输入的情况下创建特定输出的功能。

本例中的输入是采样音频,音频正在生成 MFCC 特征。知道每个文件对应的 MFCC 功能是什么,但不确定我应该如何设置神经网络。

我正在关注本指南/教程http://www.kdnuggets.com/2016/09/urban-sound-classification-neural-networks-tensorflow.html/2

它说神经网络是这样设置的

training_epochs = 5000
n_dim = tr_features.shape[1]
n_classes = 10
n_hidden_units_one = 280 
n_hidden_units_two = 300
sd = 1 / np.sqrt(n_dim)
learning_rate = 0.01

我的问题是我如何定义类的数量?我的意思是,我计算出的真实值不是分类的,而是一个十进制数,所以我应该只创建具有不同数量的类的多个网络,并选择与原始值相比误差最小的一个,或者是否有一个 tensorflow 命令可以做到这一点,就像我在做监督学习一样..

【问题讨论】:

【参考方案1】:

神经网络可用于分类任务或回归任务。在tutorial,作者想将声音分为10个不同的类别。因此,神经网络有 10 个输出神经元 (n_classes),它们的每个激活值都给出了输入声音所属类别的概率。

在我们的例子中,您想用十进制数映射给定的声音(对吗?),所以这是一个回归任务:神经网络必须学习一个未知函数。输出神经元的数量必须等于我们未知函数的输出维度(如果它只是一个十进制数,则为 1)。

所以如果你想为我们的回归任务保持相同的架构,只需设置n_classes = 1并将y_修改为

y_ = tf.matmul(h_2,W) + b

因为tf.nn.softmax将最终得分转化为概率(对分类有好处,但对回归不好)

【讨论】:

OP 还必须修改成本,因为教程 cost_function = tf.reduce_mean(-tf.reduce_sum(Y * tf.log(y_), reduction_indices=[1])) 中的成本对回归没有意义。 该死,我忘记了coss函数。谢谢@lejlot!

以上是关于是否可以使用 Tensorflow 创建用于输入/输出映射的神经网络?的主要内容,如果未能解决你的问题,请参考以下文章

带你轻松使用 TensorFlow 创建大型线性模型

使用 Tensorflow、Python 进行 OCR

TensorFlow学习(十六):使用tf.data来创建输入流(下)

TensorFlow学习(十六):使用tf.data来创建输入流(下)

Tensorflow - 多 GPU 不适用于模型(输入),也不适用于计算梯度

cuDNN v6.0 目前可以与 TensorFlow 一起使用吗?