微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用Tensorflow 2的Multi-GPU上的Variable.assignvalue

如何解决使用Tensorflow 2的Multi-GPU上的Variable.assignvalue

我有一个可以在单个GPU上完美运行的模型,如下所示:

alpha = tf.Variable(alpha,name='ws_alpha',trainable=False,dtype=tf.float32,aggregation=tf.VariableAggregation.ONLY_FirsT_REPLICA,)

...
class CustomModel(tf.keras.Model):


    @tf.function
    def train_step(inputs):
        ...
        alpha.assign_add(increment)

...


model.fit(dataset,epochs=10)

但是,当我在多个GPU上运行时,分配工作尚未完成。它适用于两个训练步骤,然后在整个时期保持不变。

alpha是两层的加权和,例如out = a*Layer1 + (1-a)*Layer2。它不是可训练的参数,但类似于step_count变量。

有人在Tensorflow 2的多GPU设置中分配单个值的经验吗?

最好将变量分配为:

with tf.device("cpu:0"):
    alpha = tf.Variable()

解决方法

根据tensorflow issues

的简单修复
setup.py

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。