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

2022-12-05 02:38:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经在两个不同但相似的数据集上使用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)

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

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

第二,我怎样才能从我训练过的模型中获得这些信息,以便我能够将其可视化


Tags: 数据代码模型testmodelmodelslayerstftensorflowtrainkeras意义集上对模型sequential
3条回答

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

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

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

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

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

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

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

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