我的数据集大小是800个音频文件,现在我想构建一个用于音频分类的人工神经网络。我在第一层给了64个神经元,在第二层给了36个神经元。在一个神经网络中会有特定数量的神经元通过吗?输入形状为(826,12),模型的输出为二进制输出。

发布于 2020-01-08 20:30:54
让我们先从更简单的部分开始。知道输入和输出层的数量以及它们的神经元的数量是最容易的部分。每个网络都有一个输入层和一个输出层。输入层中神经元的数量等于正在处理的数据中的输入变量的数量。输出层中神经元的数量等于与每个输入相关联的输出数量。但挑战是知道隐藏层的数量和它们的神经元。
答案是,您不能分析计算人工神经网络中要使用的层数或每层的节点数,以解决特定的真实预测建模问题。层数和每层中的节点数是必须指定和学习的模型超参数。您必须使用健壮的测试工具和受控实验来发现答案。不管你可能会遇到什么启发式方法,所有的答案都会回到需要仔细实验的地方,看看哪种方法最适合你的特定数据集。
同样,过滤器大小是一个这样的超参数,您应该在训练网络之前指定。
对于图像识别问题,如果您认为网络识别对象需要大量像素,则将使用大滤镜(如11x11或9x9)。如果你认为区分对象的是一些小的和局部的特征,你应该使用小滤镜(3x3或5x5)。这些是一些技巧,但不存在任何规则。
希望这能对你有所帮助。
发布于 2020-01-09 20:34:08
根据sequential models的Keras文档,
指定输入形状的
模型需要知道它应该期望的输入形状。因此,Sequential模型中的第一层(也是唯一的第一层,因为后面的层可以进行自动形状推断)需要接收有关其输入形状的信息。有几种可能的方法可以做到这一点:
input_shape=(6,8)到一个层,那么它将期望每一批
输入具有批次形状(32、6、8)。
我假设你所有的音频文件都是相同大小的。我还假设您的X_Train已经准备就绪,并且每个音频示例都是(826,12)维的,并且您的输出是单个类别。我还假设所有的音频文件都以张量的形式垂直堆叠。
如果以上操作是正确的,那么您可以尝试以下操作。如果不看上面和下面的代码,我不能说它是否可以工作。请注意'input_shape=‘参数的用法。
## ........ The code above
mmymodel = Sequential()
mmymodel.add(Dense(64, input_shape=(826,12,), init='uniform', activation = 'relu'))
mmymodel.add(Dense(36, init='uniform', activation = 'relu'))
mmymodel.add(Dropout(0.5)
mmymodel.add(Dense(1, init='uniform', activation='sigmoid'))
## ........ The code below万事如意。
https://stackoverflow.com/questions/59645868
复制相似问题