keras - 训练 AI 模型需要很长时间
问题描述
我正在解决一个多类分类问题。数据集如下所示:
|---------------------|------------------|----------------------|------------------|
| feature 1 | feature 3 | feature 4 | feature 2 |
|---------------------|------------------|------------------------------------------
| 1.302 | 102.987 | 1.298 | 99.8 |
|---------------------|------------------|----------------------|------------------|
|---------------------|------------------|----------------------|------------------|
| 1.318 | 102.587 | 1.998 | 199.8 |
|---------------------|------------------|----------------------|------------------|
4 个特征是浮点数,我的目标变量类是 1,2 或 3。当我构建跟随模型并训练时,需要很长时间才能收敛(24 小时并且仍在运行)
我使用了如下的 keras 模型:
def create_model(optimizer='adam', init='uniform'):
# create model
if verbose: print("**Create model with optimizer: %s; init: %s" % (optimizer, init) )
model = Sequential()
model.add(Dense(16, input_dim=X.shape[1], kernel_initializer=init, activation='relu'))
model.add(Dense(8, kernel_initializer=init, activation='relu'))
model.add(Dense(4, kernel_initializer=init, activation='relu'))
model.add(Dense(1, kernel_initializer=init, activation='sigmoid'))
# Compile model
model.compile(loss='binary_crossentropy', optimizer=optimizer, metrics=['accuracy'])
return model
拟合模型
best_epochs = 200
best_batch_size = 5
best_init = 'glorot_uniform'
best_optimizer = 'rmsprop'
verbose=0
model_pred = KerasClassifier(build_fn=create_model, optimizer=best_optimizer, init=best_init, epochs=best_epochs, batch_size=best_batch_size, verbose=verbose)
model_pred.fit(X_train,y_train)
我在这里按照教程: https ://www.kaggle.com/stefanbergstein/keras-deep-learning-on-titanic-data
还有一个快速的人工智能模型,如下所示:
cont_names = [ 'feature1', 'feature2', 'feature3', 'feature4']
procs = [FillMissing, Categorify, Normalize]
test = TabularList.from_df(test,cont_names=cont_names, procs=procs)
data = (TabularList.from_df(train, path='.', cont_names=cont_names, procs=procs)
.random_split_by_pct(valid_pct=0.2, seed=43)
.label_from_df(cols = dep_var)
.add_test(test, label=0)
.databunch())
learn = tabular_learner(data, layers=[1000, 200, 15], metrics=accuracy, emb_drop=0.1, callback_fns=ShowGraph)
我按照下面的教程
print(X_train.shape,y_train.shape,X_test.shape,y_test.shape)
(138507, 4) (138507, 1) (34627, 4) (34627, 1)
不知道为什么这两个模型都需要这么长时间才能运行。我的输入有什么错误吗?任何帮助表示赞赏。
解决方案
使用 200 个 epoch 和超过 138k 的训练示例(以及近 35k 的测试示例),您正在处理向网络显示的总共 34626800 (~35M) 个示例。这些都是很大的数字。假设您使用 CPU 进行训练,这可能需要几个小时甚至几天,具体取决于您的硬件。您可以做的一件事是减少时期的数量,以查看您是否更早地拥有可接受的模型。
推荐阅读
- sql - 将月份插入数据
- angular - 不能用键写 blob
- javascript - 如何使用 onChange 方法设置单个元素的状态
- python - 如何使用 opengl/pyglet 在 python 中绘制/处理像素并更改这些像素的大小?
- swift - 如何使用 FOSUserBundle 在我的邮件中包含激活链接?
- google-colaboratory - AttributeError:模块“tensorflow”没有属性“gfile”
- visual-studio-code - 即使在设置中更新 fontSize 后,VS Code 字体大小仍保持不变
- swift - 从 VC1 中的 firebase 检索用户数据并将其发送到 VC2 中的 TableView 以进行显示时出现问题
- c# - 如何使用 Google 日历修复通知
- swift - 有没有办法在 Apple Watch 屏幕关闭时记录动作?