【问题标题】:How should I compare 2 tensorflow models?我应该如何比较 2 个 tensorflow 模型?
【发布时间】:2020-09-26 12:36:21
【问题描述】:

我在 TensorFlow 中在 2 个不同但相似的数据集上训练了模型,每个数据集都使用相同的代码,如下所示:

model = tf.keras.models.Sequential([
  tf.keras.layers.Input(shape=(D,)),
  tf.keras.layers.Dense(1, activation='sigmoid')                                    
])

model.compile(optimizer='adam',
              loss='binary_crossentropy',
              metrics=['accuracy'])

r = model.fit(x_train, y_train, validation_data=(x_test, y_test), epochs=120)

数据集是金融时间序列,所以我认为将它们组合起来没有意义。我想看看训练后得到的模型有多相似,以确定对两个数据集使用一个通用模型是否有意义。

首先,我应该看什么来确定模型相似性?层权重?

其次,我如何从我训练的模型中获取这些信息,以便将其可视化?

【问题讨论】:

  • 这两个数据集有什么不同?
  • @BalajiAmbresh 两者都是财务数据,但来自 2 个不同的金融资产
  • 对不起@Riley Bolon。我对时间序列数据了解不多,无法对此发表评论。

标签: python tensorflow time-series tf.keras


【解决方案1】:

由于数据集都相似,我假设您可以创建一个验证集,将来自这两个数据集的样本结合起来。然后看看验证损失是否更接近。

【讨论】:

  • 问题是我正在使用 2 种不同金融资产的时间序列数据,所以我不确定我是否可以以一种有意义的方式组合这 2 个数据集。
  • 对不起,我对时间序列数据了解不多。
【解决方案2】:

如果两个数据集相似,也许您可​​以将两个数据集拆分为训练和评估子集,并在训练后使用评估集计算一些指标并在两个模型之间进行比较。

【讨论】:

    【解决方案3】:

    我的回答将非常笼统,因为缺少一些信息以便为您的问题提供准确的答案。

    首先-关于比较权重。 Keras 中有一个内置函数,可让您从模型的某个层检索权重。 layer.get_weights() #以 Numpy 数组列表的形式返回层的权重。

    但更具体到您的模型。我可以看到您基本上是在对数据执行逻辑回归以解决分类问题。有很多方面可以让您比较两个不同的模型,但在这种情况下,您基本上是在两个不同的数据集上应用数学方法。因此,通过构建,您对每个数据集的权重会有所不同。这两种情况之间的比较不会让您对模型的泛化能力有任何真正的见解。包含较少“噪音”的数据集将使逻辑回归表现更好 - 这几乎就是你能说的所有内容。

    只要您坚持使用 logit 模型等基本技术,我建议您查看软件包 'statsmodels'。这个包基于统计(例如,线性回归 -> OLS)方法而不是梯度下降方法执行这些类型的回归,在这种情况下可能不是最佳解决方案。

    我写的所有内容都非常理论化和笼统,可能不完全适合您的需求和数据集,但我相信它可以帮助您解决您提出的问题。 随时提出更多问题并提供有关您的问题的更具体的详细信息!

    更新: 您希望在可视化中看到什么? 回归本身?作为时代函数的损失?你的特征的系数?

    【讨论】:

    • 感谢您的信息!我使用相同的特征作为两个数据集的输入,我想知道这些特征是否对我的模型所做的预测有大致相似的影响。例如,因为我正在处理期货合约,我相信合约到期前的天数与合约价格之间可能存在关系。所以在这种情况下,我想知道 DaysBeforeExpiry 对预测的影响是否在两个数据集中都是一致的。以此类推,适用于我的所有功能。
    • 看起来您正在与石油类行业打交道。你到底想预测什么?似乎将简单的线性回归应用为经典的 OLS 模型或概率模型会对您有很大帮助。与其他机器学习算法不同,线性回归很容易解释。您可以计算每个特征的系数,看看它是否具有统计意义(如果它对 Y 变量的影响是毫无疑问的)。让我知道您要预测什么,我会帮助您找出解决问题的完美解决方案。
    • 我的Y变量要么为0要么为1,表示第二天2个相关价格的差值在某个方向上的变化是否大于0.5%。我相信这会带来一笔有利可图的交易,因此我试图预测它何时会发生。
    • 我明白了,为了获得有关变量对 Y 变量影响的更多信息,您绝对应该使用概率模型。概率模型本质上是一个线性回归,它输出事件发生的概率。即使模型表现不佳,您仍然可以通过这种方式知道逻辑回归中到底发生了什么,因为 logit 模型基本上是线性模型的 sigmoid 变换。最好的工具是使用我前面提到的“statsmodels”包或另一种名为 R 的编程语言。
    • 一般来说,R非常推荐用于财务分析。如果您愿意,我可以为您提供任何一种选择。
    猜你喜欢
    • 1970-01-01
    • 2011-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-02
    • 2011-06-22
    • 2015-04-04
    • 1970-01-01
    相关资源
    最近更新 更多