performance - Tensorflow - Keras,在 GPU 上的训练比在 CPU 上慢得多
问题描述
我试图找出在使用 GPU 运行时进行训练时性能缓慢的原因。
数据:11 个特征的参差不齐的张量。形状:(49724, None, 11)
.(从 Dropbox 下载数据集)
目标:每个样本结果有 3 个目标,范围在 0-1 之间。形状:(49724, 3)
.(从 Dropbox 下载目标)
该模型是一个具有使用ragged=True
属性的输入层的 LSTM 网络。代码:
config = {
'learning_rate': 0.001,
'lstm_neurons':32,
'lstm_activation':'tanh',
'dropout_rate': 0.08,
'batch_size': 128,
'dense_layers':[
{'neurons': 32, 'activation': 'relu'},
{'neurons': 32, 'activation': 'relu'},
]
}
def get_model(num_features, output_size):
opt = Adam(learning_rate=0.001)
model = Sequential()
model.add(Input(shape=[None,num_features], dtype=tf.float32, ragged=True))
model.add(LSTM(config['lstm_neurons'], activation=config['lstm_activation']))
model.add(BatchNormalization())
if 'dropout_rate' in config:
model.add(Dropout(config['dropout_rate']))
for layer in config['dense_layers']:
model.add(Dense(layer['neurons'], activation=layer['activation']))
model.add(BatchNormalization())
if 'dropout_rate' in layer:
model.add(Dropout(layer['dropout_rate']))
model.add(Dense(output_size, activation='sigmoid'))
model.compile(loss='mse', optimizer=opt, metrics=['mse'])
print(model.summary())
return model
model = get_model(11 ,3)
我创建了 2 个 Google Colab 笔记本来演示这个问题。一种是 GPU 运行时,另一种是 CPU 运行时。
在GPU运行时,需要 1 个 epoch 869s
,而在CPU运行时需要252s
!
我的问题是为什么,我能做些什么吗?
解决方案
推荐阅读
- r - 百分比条形图
- python - 我需要一个正则表达式来在两个标签 python 之间找到一个短语
- python - Python 多个列表循环仅在列表之一出现异常后继续
- svg - 我可以为 [tableValues] 上的每个值设置特定间距吗?
- r - R reactable - 更新单行
- powershell - Powershell - 遍历从文本文件中获取的数组项失败
- c++ - 通过 C/C++ (Embarcadero) 生成以太坊地址
- python - 有没有一种简单的方法可以在 Seaborn 的同一个 FacetGrid 上绘制两个分类图?
- asp.net - Angular 8 + asp.net webapi Azure Ad 隐式身份验证
- android - 在系统上下文中在 android 上安装 CA 证书