【问题标题】:Number of CNN learnable parameters - Python / TensorFlowCNN 可学习参数的数量 - Python / TensorFlow
【发布时间】:2018-04-28 20:08:01
【问题描述】:

在 TensorFlow 中,我可以做些什么来找出我网络中学习参数的数量?

【问题讨论】:

    标签: python tensorflow conv-neural-network


    【解决方案1】:

    你可以用一个简单的单线做到这一点:

    np.sum([np.prod(v.get_shape().as_list()) for v in tf.trainable_variables()])
    

    如果您需要更多细节,这里有一个帮助函数,我用它来查看所有可训练参数:

    def show_params():
      total = 0
      for v in tf.trainable_variables():
        dims = v.get_shape().as_list()
        num  = int(np.prod(dims))
        total += num
        print('  %s \t\t Num: %d \t\t Shape %s ' % (v.name, num, dims))
      print('\nTotal number of params: %d' % total)
    

    它会像这样打印你的信息:

      params/weights/W1:0        Num: 34992      Shape [3, 3, 18, 216] 
      params/weights/W2:0        Num: 839808     Shape [3, 3, 216, 432] 
      params/weights/W3:0        Num: 839808     Shape [3, 3, 432, 216] 
      params/weights/W4:0        Num: 57856      Shape [226, 256] 
      params/weights/W5:0        Num: 32768      Shape [256, 128] 
      params/weights/W6:0        Num: 8192       Shape [128, 64] 
      params/weights/W7:0        Num: 64         Shape [64, 1] 
      params/biases/b1:0         Num: 216        Shape [216] 
      params/biases/b2:0         Num: 432        Shape [432] 
      params/biases/b3:0         Num: 216        Shape [216] 
      params/biases/b4:0         Num: 256        Shape [256] 
      params/biases/b5:0         Num: 128        Shape [128] 
      params/biases/b6:0         Num: 64         Shape [64] 
      params/biases/b7:0         Num: 1          Shape [1]
    
    Total number of params: 1814801
    

    【讨论】:

      【解决方案2】:

      没有我知道的功能,但您仍然可以在 tf.trainable_variables(): 上使用 for 循环来计算自己

      total_parameters = 0
      for variable in tf.trainable_variables():
          variable_parameters = 1
          for dim in variable.get_shape():
              variable_parameters *= dim.value
          total_parameters += variable_parameters
      
      print("Total number of trainable parameters: %d" % total_parameters)
      

      【讨论】:

      • 知道了!谢谢!放置那段代码的最佳位置是什么?初始化 TensorFlow 会话后?
      • 你可以把它放在会话初始化之前。它只读取图形变量,不需要 tf 会话
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-10-08
      • 2021-05-16
      • 1970-01-01
      • 2021-02-24
      • 1970-01-01
      • 2021-04-15
      • 1970-01-01
      相关资源
      最近更新 更多