【问题标题】:Can a trained ANN (tensorflow) model be made predictable?可以使训练有素的 ANN(张量流)模型可预测吗?
【发布时间】:2020-07-01 07:10:27
【问题描述】:

我是 ANN 的新手,但我已经成功地训练了一个卷积模型(使用一些遗留的 tensorflow v1 代码),我的数据准确率高达 90% 左右。但是当我在任何给定的批次上评估(测试)它时,结果有点随机,即使它是 90% 正确的。我尝试重新评估数据 N 次并取平均值(使用 1 到 25 之间的 N),但每次评估与其他评估的差异仍然在 3% 到 10% 的数据点之间。

有什么方法可以使评估可预测,以便每次运行输入批次X 的评估总是产生完全相同的结果Y(一旦训练完成)?

我不确定它是否相关,但我的图层是这样批量标准化的:

inp = tf.identity(inp)
channels = inp.get_shape()[-1]
offset = tf.compat.v1.get_variable(
             'offset', [channels],
             dtype=tf.float32,
             initializer=tf.compat.v1.zeros_initializer())
scale = tf.compat.v1.get_variable(
            'scale', [channels],
            dtype=tf.float32,
            initializer=tf.compat.v1.random_normal_initializer(1.0, 0.02))
mean, variance = tf.nn.moments(x=inp, axes=[0, 1], keepdims=False)
variance_epsilon = 1e-5
normalized = tf.nn.batch_normalization(
                 inp, mean, variance, offset, scale, variance_epsilon=variance_epsilon)

比例部分是用随机数据初始化的,但我假设它在我做@​​987654324@时被加载?

【问题讨论】:

    标签: python tensorflow neural-network


    【解决方案1】:

    我假设您正在训练批次上测试模型?

    您不能将整个训练数据集的一部分的准确性等同于整体的准确性。

    把它想象成一个回归问题。如果您只获取数据集的一部分,则无法保证它的平均结果会接近整个数据集。

    如果您想要一致的准确性,请在完整数据集上进行评估。

    【讨论】:

    • 我希望在完成训练后始终将输入数据映射到输出数据。这可能吗?
    • 如果你在整个数据集上运行你的模型,它应该是相同的输出序列,也就是输入的序列。除非您使用生成器并指定 Shuffle=True。您的数据管道是什么样的?
    猜你喜欢
    • 2018-12-03
    • 2018-09-18
    • 2020-02-05
    • 1970-01-01
    • 2020-02-29
    • 1970-01-01
    • 2016-05-12
    • 1970-01-01
    • 2021-06-28
    相关资源
    最近更新 更多