gpt4 book ai didi

python - 为什么keras model.fit with sample_weight 初始化时间长?

转载 作者:行者123 更新时间:2023-12-04 17:26:16 31 4
gpt4 key购买 nike

我正在使用 kerastensorflow (版本 2.2.0)后端来训练分类器来区分两个数据集 A 和 B,我已将它们混合到一个 Pandas DataFrame 对象中 x_train (有两列),并在 numpy 数组中带有标签 y_train .我想进行样本加权,以说明 A 的样本比 B 多得多。此外,A 由两个数据集 A1 和 A2 组成,A1 远大于 A2;我想用我的样本权重来解释这个事实。我在名为 w_train 的 numpy 数组中有样本权重.有大约 1000 万个训练样本。
这是示例代码:

model = Sequential()
model.add(Dense(64, input_dim=x_train.shape[1], activation='relu'))
model.add(Dropout(0.1))
model.add(Dense(64, activation='relu'))
model.add(Dropout(0.1))
model.add(Dense(64, activation='relu'))
model.add(Dropout(0.1))
model.add(Dense(64, activation='relu'))
model.add(Dropout(0.1))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])

model.fit(x_train.iloc, y_train, sample_weight=w_train)
当我使用 sample_weight参数在 model.fit() ,我发现模型拟合初始化(即在 keras 开始显示训练进度之前发生的任何事情)需要很长时间,无法等待 .当我将数据集限制为 1000 个样本时,问题就消失了,但是当我增加到 100000 或 1000000 个样本时,我注意到初始化和拟合时间存在显着差异,因此我怀疑这与数据的方式有关正在加载。然而,仅仅添加 sample_weights 似乎很奇怪。争论会导致如此大的时间差异。
其他信息:我使用 Jupyter 笔记本在 CPU 上运行。
这里有什么问题?有没有办法让我修改训练设置或其他东西以加快初始化(或训练)时间?

最佳答案

该问题是由 TensorFlow 如何验证某种类型的输入对象引起的。当数据确实正确时,这种验证完全是浪费时间(我希望将来能更好地处理)。
为了强制 TensorFlow 跳过此类验证程序,您可以轻松地将权重包裹在 Pandas Series ,例如:

model.fit(x_train.iloc, y_train, sample_weight=pd.Series(w_train))
请注意,在您的代码中您使用的是 metrics关键词。如果您希望在提供的权重上实际加权准确度,请使用 weighted_metrics取而代之的说法。

关于python - 为什么keras model.fit with sample_weight 初始化时间长?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63158424/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com