python - Keras 只使用一个核心
问题描述
我正在使用带有 Tensorflow 后端的 Keras。问题是我的 cpu 中只有一个核心在训练期间被积极使用。我通过以下方式声明我的模型:
class GAN():
def __init__(self):
with k.backend.name_scope("Discriminator"):
self.discriminator = build_discriminator(input_shape,
discriminanator_units)
self.discriminator.compile(optimizer=k.optimizers.Adam(0.0005),
loss=k.losses.binary_crossentropy,
metrics=[k.metrics.binary_accuracy])
with k.backend.name_scope("Generator"):
discriminator_frozen = k.Model(self.discriminator.inputs,
self.discriminator.outputs,
name="Disc_frozen")
discriminator_frozen.trainable = False
... # declare input placeholders
self.generator = build_generator(input_shape, generator_units)
self.prediction = self.generator(inputs=input_list)
... # some Lambda layers
evaluation = discriminator_frozen(self.positions_pelvis_relative)
self.combined = k.Model(inputs=[*input_list,
self.mask,
self.adjacency],
outputs=[evaluation])
self.combined.compile(optimizer=k.optimizers.Adam(0.0015),
loss=self.gan_loss,
metrics=[self.displacement_loss,
self.discriminator_loss,
self.adjacency_loss])
当我进行预训练时self.discriminator
,所有 CPU 内核都在使用,但是当我与生成器互换训练时,只使用了 1 个内核。
解决方案
事实证明,在生成器训练阶段有一个随机抽样操作成为了整个过程的瓶颈。在使用了所有 CPU 内核之后,我创建了一个随机噪声数据集并从中采样。
推荐阅读
- css - b-list-group 和 b-list-group-item 的 BootstrapVue 样式
- python - 没有获得多处理 netmiko 多个设备的输出
- mysql - Can't connect to a DB: database is closed
- python - Python SkLearn: ValueError: Found input variables with inconsistent numbers samples: [1173, 294]
- java - How to generate multiple Tuples or String combinations of a custom Java Object
- graph - Dash Plotly Graph height/width aspect ratio
- python - Finding element-wise closest match of a series with respect to values of a second series and the locations (index) of these closest matches
- sublimetext3 - 崇高的文字在标题中显示方形框
- ruby-on-rails - 如何让 tpope/vim-rails gf 命令与 SpaceVim 一起工作
- c# - ASP.net MVC 应用程序中视图的 Angular.js 路由不起作用