繁体   English   中英

Keras仅使用一个核心

[英]Keras uses only one core

我正在将Keras与Tensorflow后端一起使用。 问题是在培训过程中,我的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内核,但是当我与generator互换训练时,仅使用1个内核。

事实证明,在发电机训练阶段存在一个随机采样操作,使整个过程成为瓶颈。 在使用完所有CPU内核之后,我创建了一个随机噪声数据集并对其进行了采样。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM