【问题标题】:Keras uses only one coreKeras 只使用一个核心
【发布时间】:2019-02-14 16:56:52
【问题描述】:

我正在使用带有 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 个内核。

【问题讨论】:

  • 如果是纯 Python,它只能使用单个 CPU,这是设计的。谷歌“吉尔”。
  • @tripleee,据说tensorflow和keras都隐式处理多处理,所以我没有机会干预这个过程。

标签: python tensorflow keras


【解决方案1】:

事实证明,在生成器训练阶段有一个随机抽样操作成为了整个过程的瓶颈。我创建了一个随机噪声数据集并从中采样,之后使用了所有 CPU 内核。

【讨论】:

  • 你还记得你是如何关闭随机抽样的吗?
  • @PeterPirog 我使用基于 cpu 的非常窄的采样操作,如果以矢量化方式完成,当前的采样实现非常快
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-10-29
  • 1970-01-01
  • 1970-01-01
  • 2018-03-07
  • 2023-02-16
  • 1970-01-01
  • 2016-10-29
相关资源
最近更新 更多