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 个内核。


杨魅力
浏览 152回答 1
1回答

胡子哥哥

结果发现,在生成器训练阶段有一个随机抽样操作,导致了整个过程的瓶颈。在使用所有 CPU 内核之后,我创建了一个随机噪声数据集并从中采样。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python