我试图在R中训练一个带有角角的CNN,我有一个时间序列,它是三维的,所以每个样本都有尺寸95 x 365,有80个特征,我把它们作为频道输入。输出值仅为1。问题是网速太慢了。用400个样本训练1次,只需33分钟。这个体系结构非常简单(实际上我有一个更深的网,但是由于它太慢了,所以我简化了它,看它是否有用):
model <- keras_model_sequential()
model %>%
layer_conv_2d(filters = 32, kernel_size = c(9, 9), activation = "relu",
input_shape = c(95, 365, 80)) %>%
layer_max_pooling_2d(pool_size = 2) %>%
layer_flatten() %>%
layer_dense(units = 50, activation = "relu") %>%
layer_dense(units=1)
model %>% compile(
loss = 'mse',
optimizer = optimizer_rmsprop()
)
model %>% fit(
x_train, y_train,
batch_size = 32,
epochs = 1,
verbose = 0
)我真的不知道这是甚麽问题。我训练了更简单的网络,比如MLP,计算时间在“正常”范围内,比如几分钟的时间,比如100个历次。所以我想问题不在于我使用的硬件。
发布于 2019-06-20 09:20:07
因为CNN的计算成本很高,因为矩阵计算,这是GPU的帮助点,当你在CPU上执行相同的操作时,需要花费大量的时间,因为CPU中的核心数量远小于GPU。
由于您的数据以95x365表示,其中有80个通道,矩阵操作使其运行缓慢。
发布于 2020-11-12 21:33:20
如果您所在的本地环境正在减缓您的培训速度,请尝试使用一个在线平台,该平台为您提供免费的GPU,如谷歌Colab,Kaggle的免费GPU
这些是几个使用相同的教程。
https://datascience.stackexchange.com/questions/53850
复制相似问题