tensorflow - 训练神经网络来检测最频繁的输入

标签 tensorflow machine-learning neural-network

是否有任何神经网络架构可以预测输入中最常见的数字?我知道这个问题可以使用Python这样的经典编程语言来解决,我有兴趣了解这个问题在神经网络世界中的特点。

假设输入是 [0, M) 中的 N 个整数数组,输出是大小为 N 的 one-hot 编码> 代表最常见的数字。例如,如果输入为 x = [4,0,4,3,2,4],则输出将为 y = [1,0,1,0,0, 1](N=6M=5)。

我尝试过一个两层网络,它对于小输入工作得很好,但对于较大输入来说它不能很好地扩展,例如,N=25M=10 。我怀疑它记住了所有域。

任何有关解决更大尺寸问题的想法,或任何与解决这一系列问题相关的想法,我们都会表示赞赏。

最佳答案

我认为你需要尝试两件事(单位和纪元):

1) 考虑单位的大小,对于任务x = [4,0,4,3,2,4],使用具有 3 个单位的一层就足够了:

model = tf.keras.models.Sequential()
model.add(tf.keras.layers.Dense(3-9, activation=tf.keras.activations.relu, input_dim=1))
model.add(tf.keras.layers.Dense(1, activation=tf.keras.activations.linear))

2)对于这样的任务,我可以建议设置很多时期,因为这是特定的任务,并且您的神经网络需要时间来设置所有参数。但也不要设置很多单位,因为你的神经网络通常可以走另一条路。

我的建议:

model = tf.keras.models.Sequential()
model.add(tf.keras.layers.Dense(3-100, activation=tf.keras.activations.relu, input_dim=1))
model.add(tf.keras.layers.Dense(3-100, activation=tf.keras.activations.relu))
model.add(tf.keras.layers.Dense(1, activation=tf.keras.activations.linear))
model.compile(
    optimizer=tf.keras.optimizers.Adam(),
    loss=tf.keras.losses.mse,
    metrics=['accuracy']
)

model.fit(x_train, y_train,
          batch_size=1,
          epochs=1-infinity,
          verbose=1)
  • 激活relu(单位不会死亡)
  • batch_size 1 -> 对于此任务,您需要依赖所有输入

因此,开始玩一个 epoch 并找出最佳准确度并观察 LOSS(当您的 LOSS 很小时,您的准确度会迅速增加),具体取决于多少个单位。当找到最佳单位数量时,请根据时间设置尽可能多的时期(尝试 10,然后 50...)。

希望,它会有所帮助。祝你好运!

关于tensorflow - 训练神经网络来检测最频繁的输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55931725/

相关文章:

python - 使用 keras ImageGenerator 训练多输入模型

java - Encog 神经网络验证/测试

python - reshape LSTM 自动编码器的输入数据

python - 构建 BasicDecoder TensorFlow Addons 时出错

python - Tensorflow 代码破解

python - 保存重新训练的 tensorflow 模型时出现问题

python-3.x - Dropout 和批量归一化 - 层的顺序重要吗?

python - 训练 E-net 进行人体分割

tensorflow - 是否可以将已经训练好的 Keras 部署到 Sagemaker?

使用tensorflow时Python内核死了