我最近偶然发现了crabnet,我正在一个催化项目中使用它。这是对项目的一个很好的补充,但我发现了一个问题。
我想在数据集的不同子集中训练螃蟹网络(过滤反应条件),看看是否能给出更好的结果(有时我有相同的成分,但反应条件不同,从而给出不同的结果)。问题似乎是,当您实例化 2 个crabnet 实例时,某些部分似乎是共享的。
这是如何复制问题的最小工作示例:
"""Basic usage of CrabNet regression on elasticity dataset."""
from crabnet.utils.data import get_data
from crabnet.data.materials_data import elasticity, example_materials_property
from crabnet.crabnet_ import CrabNet
train_df, val_df = get_data(elasticity, "train.csv", dummy=True)
train_df_2, val_df_2 = get_data(example_materials_property, "train.csv", dummy=True)
cb = CrabNet(mat_prop="elasticity")
cb.fit(train_df)
val_pred, val_sigma = cb.predict(val_df, return_uncertainty=True)
cbn = CrabNet(mat_prop="example_materials_property")
cbn.fit(train_df_2)
val_pred_2, val_sigma_2 = cbn.predict(val_df_2, return_uncertainty=True)
该示例只是Crabnet 文档中的基本用法示例,但重复每个步骤(并更改数据集以防万一)。
这会返回此错误:
File ".conda\lib\site-packages\torch\optim\optimizer.py", line 271, in wrapper for pre_hook in chain(_global_optimizer_pre_hooks.values(), self._optimizer_step_pre_hooks.values()): AttributeError: 'SWA' object has no attribute '_optimizer_step_pre_hooks'
。整个错误日志引用第14行cbn.fit(train_df_2)
作为问题的触发点。
我如何实例化超过 1 个模型?