是否可以使用 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学习(十六):使用tf.data来创建输入流(下)
TensorFlow学习(十六):使用tf.data来创建输入流(下)