【问题标题】:How can I use tf.identity to make a copy of a list of tesnors (not just a single tensor)?如何使用 tf.identity 制作张量列表的副本(而不仅仅是单个张量)?
【发布时间】:2018-08-22 09:36:11
【问题描述】:

我试过了

weights = {
'wc1': tf.get_variable('wc1', shape=(8,8,4,32), initializer=tf.contrib.layers.xavier_initializer()), 
'wc2': tf.get_variable('wc2', shape=(4,4,32,64), initializer=tf.contrib.layers.xavier_initializer()), 
'wc3': tf.get_variable('wc3', shape=(3,3,64,64), initializer=tf.contrib.layers.xavier_initializer()), 
'wd1': tf.get_variable('wd1', shape=(7744,512), initializer=tf.contrib.layers.xavier_initializer()), 
'wd2': tf.get_variable('wd2', shape=(512,action_size), initializer=tf.contrib.layers.xavier_initializer()), 
'bc1': tf.get_variable('bc1', shape=(32), initializer=tf.contrib.layers.xavier_initializer()),
'bc2': tf.get_variable('bc2', shape=(64), initializer=tf.contrib.layers.xavier_initializer()),
'bc3': tf.get_variable('bc3', shape=(64), initializer=tf.contrib.layers.xavier_initializer()),
'bd1': tf.get_variable('bd1', shape=(512), initializer=tf.contrib.layers.xavier_initializer()),
'bd2': tf.get_variable('bd2', shape=(action_size), initializer=tf.contrib.layers.xavier_initializer()),

}

然后

weight_copies = [tf.identity(weights) for x in range(10)]

但我得到以下错误

TypeError: Expected binary or unicode string, got {'wc1': , 'wc2': , 'wc3': , 'wd1': , 'wd2': , 'bc1': , 'bc2': , 'bc3 ': , 'bd1': , 'bd2': }

现在我的问题是如何做到这一点而不会出错?

【问题讨论】:

    标签: python tensorflow


    【解决方案1】:

    weights 是一个字典,因此您需要遍历这些值。

    weight_copies = [tf.identity(v) for v in weights.values()]
    

    如果您还希望输出为字典,请迭代 items。

    weight_copies = {k: tf.identity(v) for k, v in weights.items()}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-17
      • 2022-01-06
      • 2022-01-10
      • 1970-01-01
      • 1970-01-01
      • 2020-07-15
      • 2017-08-29
      • 1970-01-01
      相关资源
      最近更新 更多