【问题标题】:Tensorflow : Shapes must be equal rank, but are 4 and 1, for tf.normTensorflow:对于 tf.norm,形状必须是等阶的,但是是 4 和 1
【发布时间】:2018-05-12 03:28:40
【问题描述】:

我正在尝试在 conv2d 层中找到所有过滤器的规范。请在下面找到相同的代码

conv1 = tf.layers.conv2d(
                         inputs=input_layer,
                         filters=32,
                         strides=(1, 1),
                         kernel_size=[3, 3],
                         padding="valid",
                         activation=tf.nn.relu,
                         use_bias=True,
                         kernel_regularizer=tf.nn.l2_loss,
                         bias_regularizer=tf.nn.l2_loss,
                         name="conv1")

var = [v for v in tf.trainable_variables() if "conv1" in v.name]
print(tf.norm(var,axis=4))

形状必须是相同的等级,但是是 4 和 1 来自将形状 0 与其他形状合并。对于具有输入形状的“规范/打包”(操作:“打包”):[3,3,3,32],[32]。

我尝试了从“无到 4”的多个轴值,但没有一个工作。谁能解释一下是什么问题以及如何解决?

【问题讨论】:

    标签: python tensorflow


    【解决方案1】:

    您的代码中有两个错误。一种是var 包含一个张量列表,而tf.norm() 只需要一个张量。此外,权重的维度为 4,维度从 0 开始编号,因此第四维度的轴为 3。此代码(已测试):

    import tensorflow as tf
    
    input_layer = tf.random_uniform( shape = ( 2, 10, 10, 2 ) )
    
    conv1 = tf.layers.conv2d(
                             inputs=input_layer,
                             filters=32,
                             strides=(1, 1),
                             kernel_size=[3, 3],
                             padding="valid",
                             activation=tf.nn.relu,
                             use_bias=True,
                             kernel_regularizer=tf.nn.l2_loss,
                             bias_regularizer=tf.nn.l2_loss,
                             name="conv1")
    
    var = [v for v in tf.trainable_variables() if "conv1" in v.name][ 0 ]
    print( tf.norm( var, axis = 3 ) )
    

    将输出:

    Tensor("norm/Squeeze:0", shape=(3, 3, 2), dtype=float32)

    没有错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-05
      • 1970-01-01
      • 2018-06-03
      • 1970-01-01
      • 2018-06-12
      相关资源
      最近更新 更多