【问题标题】:How to visualize TensorFlow Estimator weights?如何可视化 TensorFlow Estimator 权重?
【发布时间】:2018-02-02 11:05:02
【问题描述】:

如何从tf.estimator.Estimator 中选择一个层并访问该层中每个单元的权重向量?具体来说,我正在尝试可视化密集层的权重。

查看https://github.com/tensorflow/tensorflow/blob/r1.3/tensorflow/python/layers/core.py 似乎 weights 被称为 kernels,但在使用 Estimator 抽象时我无法访问它们。

Ps:Estimator 的实现示例,参考https://www.tensorflow.org/get_started/estimator

【问题讨论】:

    标签: debugging machine-learning tensorflow visualization


    【解决方案1】:

    估计器has a method 称为get_variable_value。因此,一旦您生成了一个检查点(或从其中加载了变量值)并且如果您知道密集层的名称,您可以使用matplotlib 执行类似的操作:

    import matplotlib.pyplot as plt
    
    weights = estimator.get_variable_value('dense/kernel')
    plt.imshow(weights, cmap='gray')
    plt.show()
    

    【讨论】:

    • 你是怎么知道变量名的?例如,当使用带有 FTRL 优化器的 LinearRegressor Estimator 时,使用链接页面中的 get_variable_names() 方法,我得到 'global_step', 'linear/linear_model/X0/weights', 'linear/linear_model/X0/weights/part_0/Ftrl', 'linear/linear_model/X0/weights/part_0/Ftrl_1', 'linear/linear_model/X1/weights', 'linear/linear_model/X1/weights/part_0/Ftrl', 'linear/linear_model/X1/weights/part_0/Ftrl_1', 'linear/linear_model/X2/weights', 'linear/linear_model/X2/weights/part_0/Ftrl', 'linear/linear_model/X2/weights/part_0/Ftrl_1' 等。
    • @ac2051 我可以修改这些权重吗?我想要一个像 set_variable_value 这样的方法。
    • @natkinis 我可以修改这些权重吗?我想要一个像 set_variable_value 的方法
    【解决方案2】:

    我刚刚使用预编译的Estimator 进行测试,这对我来说工作正常。

    import matplotlib.pyplot as plt
    
    names = classifier.get_variable_names()        
    print("name:", names)
    for i in names:
        print(classifier.get_variable_value(i)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-20
      • 1970-01-01
      • 1970-01-01
      • 2019-05-20
      • 1970-01-01
      • 2018-06-29
      • 2020-04-29
      • 2013-10-12
      相关资源
      最近更新 更多