Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我应该如何比较两个tensorflow模型?_Python_Tensorflow_Time Series_Tf.keras - Fatal编程技术网

Python 我应该如何比较两个tensorflow模型?

Python 我应该如何比较两个tensorflow模型?,python,tensorflow,time-series,tf.keras,Python,Tensorflow,Time Series,Tf.keras,我已经在两个不同但相似的数据集上使用TensorFlow对模型进行了培训,每个数据集使用相同的代码,如下所示: model = tf.keras.models.Sequential([ tf.keras.layers.Input(shape=(D,)), tf.keras.layers.Dense(1, activation='sigmoid') ]) model.compile(optimizer='adam',

我已经在两个不同但相似的数据集上使用TensorFlow对模型进行了培训,每个数据集使用相同的代码,如下所示:

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)
这些数据集是金融时间序列,所以我认为把它们结合起来是没有意义的。我想看看训练后得到的模型有多相似,以决定对两个数据集使用一个通用模型是否有意义

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


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

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

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

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

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

但更具体的是你的模型。我可以看出,您基本上是在对数据执行逻辑回归,以解决分类问题。有许多方面允许您比较两个不同的模型,但在本例中,您基本上是在两个不同的数据集上应用数学方法。因此,通过构建,每个数据集的权重将不同。这两种情况之间的比较并不能让您真正了解模型的泛化能力。包含较少“噪音”的数据集将使逻辑回归的性能更好——这就是你所能说的

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

我所写的一切都是理论性的和一般性的,可能并不完全适合您的需求和数据集,但我相信它可能会帮助您解决您提出的问题。 请随时提出更多问题,并提供有关您的问题的更多具体细节

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

这两个数据集有什么不同?@BalajiAmbresh都是财务数据,但来自两个不同的财务资产抱歉@Riley Bolon。我对时间序列数据了解不多,无法对此发表评论。问题是,我正在为两种不同的金融资产使用时间序列数据,因此我不确定是否能够以合理的方式组合这两种数据集。抱歉,我对时间序列数据知之甚少。感谢您提供的信息!我使用相同的特性作为两个数据集的输入,我想知道这些特性是否对我的模型所做的预测有大致相似的影响。例如,因为我在处理期货合约,我相信合约到期前的天数与合约价格之间可能存在某种关系。所以在这种情况下,我想知道DaysBeforeExpiry对预测的影响是否在两个数据集中是一致的。诸如此类,就我的所有特征而言,似乎你正在处理一个类似石油的行业。你到底想预测什么?似乎将简单线性回归应用于经典的OLS模型或probit模型都会对您有很大帮助。与其他机器学习算法不同,线性回归很容易解释。您可以计算每个特征的系数,如果它对Y变量的影响毫无疑问,则可以查看它是否具有统计意义。让我知道您试图预测什么,我将帮助您找出问题的最佳解决方案。我的Y变量为0或1,表示第二天两个相关价格之间的差异在某个方向上的变化是否大于0.5%。这是一个我相信会带来盈利交易的事件,所以我试图预测它何时会发生。我明白了,为了获得更多关于变量对Y变量影响的信息,你一定要使用probit模型。概率模型本质上是一种线性回归,它输出事件发生的概率。即使模型的性能很差,你仍然可以知道logistic回归中到底发生了什么,因为logit模型基本上是线性模型的sigmoid变换。实现这一目标的最佳工具是
使用我前面提到的“statsmodels”包,或者使用另一种名为r的编程语言。一般来说,财务分析非常推荐使用r。如果你愿意,我可以用其中一个选项来指导你。