在人工神经网络中选择初始神经元

时间:2020-01-08 12:26:52

标签: deep-learning neural-network

我的数据集大小为800个音频文件,现在我想建立一个人工神经网络来进行音频分类。 我在第一层给了神经元64个,在第二层给了36个神经元。神经网络中应该传递特定数量的神经元吗? 输入形状为(826,12),模型的输出为二进制输出。 Here is My Neural Network

2 个答案:

答案 0 :(得分:1)

让我们首先从更简单的部分开始。知道输入和输出层的数量及其神经元的数量是最容易的部分。每个网络都有一个输入层和一个输出层。输入层中神经元的数量等于正在处理的数据中输入变量的数量。输出层中神经元的数量等于与每个输入关联的输出的数量。 但是挑战在于知道隐藏层及其神经元的数量。

答案是,您无法分析计算人工神经网络中用于解决特定现实世界预测建模问题的层数或每层要使用的节点数。 层数和每层中的节点数是必须指定和学习的模型超参数。 您必须使用强大的测试工具和受控实验来找到答案。无论采用哪种启发式方法,您都可能会遇到所有答案,这都需要重新进行仔细的试验,以了解哪种方法最适合您的特定数据集。

同样,过滤器大小是您在训练网络之前应指定的一种超参数。

对于图像识别问题,如果您认为网络识别对象需要大量像素,则将使用大型滤镜(如11x11或9x9)。如果您认为区分对象的是一些小的局部特征,则应使用小型滤镜(3x3或5x5)。 这些是一些技巧,但不存在任何规则。

希望这会对您有所帮助。

答案 1 :(得分:0)

根据Keras的sequential models文档,

指定输入形状

模型需要知道应该期望的输入形状。为了这 原因是,顺序模型中的第一层(只有第一层, 因为后续图层可以自动进行形状推断)需要 接收有关其输入形状的信息。有几种可能 方式:

  • 将input_shape参数传递给第一层。这是一个形状元组(整数或无条目的元组,其中无表示 可以预期任何正整数)。在input_shape中, 不包括批次尺寸。
  • 某些2D图层(例如Dense)通过参数input_dim和某些3D时态来支持其输入形状的指定 图层支持参数input_dim和input_length。
  • 如果您需要为输入指定固定的批量大小(这对于有状态的循环网络很有用),则可以通过 图层的batch_size参数。如果您同时传递batch_size = 32和
    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

祝一切顺利。

相关问题