Python 是否有一种方法可以自动获取特征图的形状,并使用它在Tensorflow中构建图形?

Python 是否有一种方法可以自动获取特征图的形状,并使用它在Tensorflow中构建图形?,python,tensorflow,conv-neural-network,Python,Tensorflow,Conv Neural Network,我正在建立自己的CNN 在卷积层和完全连接层之间 我需要知道卷积层输出的大小,即 宽度\特征图*高度\特征图*数量\特征图 所以我可以知道这两层之间权重的形状,也就是 [卷积层的数字神经元输出,数字神经元第一完全连接层] 我想做的是得到[width\u feature map,height\u feature,map*number\u feature map] 自动,因此可以使用它在卷接层和完全连接层之间建立连接 我试着 def add_convtofully_layer(self,size_o

我正在建立自己的CNN
在卷积层和完全连接层之间 我需要知道卷积层输出的大小,即

宽度\特征图*高度\特征图*数量\特征图

所以我可以知道这两层之间权重的形状,也就是

[卷积层的数字神经元输出,数字神经元第一完全连接层]

我想做的是得到[width\u feature map,height\u feature,map*number\u feature map] 自动,因此可以使用它在卷接层和完全连接层之间建立连接

我试着

def add_convtofully_layer(self,size_out,data_in):
      shape_in=tf.shape(data_in)#[batch,H,W,C]
      data_re=tf.reshape(data_in,[-1,shape_in[1]*shape_in[2]*shape_in[3]])
      W=self.weight_NN(shape_in[1]*shape_in[2]*shape_in[3],size_out)
      B=self.bias_NN(size_out)
      data_drop=tf.nn.dropout(data_re,self.drop)
      result=tf.nn.relu(tf.matmul(data_drop,W)+B)
      return result

def weight_NN(self,w_in,w_out):
    W=tf.Variable(tf.truncated_normal([w_in,w_out],stddev=0.1),name='weight')
    return W


def bias_NN(self,out):
    B=tf.Variable(tf.constant(0.0,dtype=tf.float32,shape=[out]),name='bias')
    return B
但我只得到了信息

ValueError:初始值必须指定一个形状:Tensor(“完全连接\u layer1/截断\u normal:0”,形状=(?,150),数据类型=float32)

有没有一种方法可以使用Tensorflow来实现这一点?或者唯一的方法是我需要先自己计算


谢谢

看起来您的输入仍然具有可变的批处理维度。(在
shape=(?,150)
中的?告诉您这一点,因为?代表可变大小)。不,您不能初始化可变大小的变量,因为tensorflow无法正确分配内存

尽管在忽略
shape\u in
中的第一个值时,似乎会去除批处理维度,但有两种可能性:第一种可能来自刚刚传递的
size\u out
参数。另一个原因是您意外地混淆了中的
shape\u中的尺寸,并且实际上没有解决问题

我的建议是在调试器中运行代码——虽然您无法跟踪符号库(如tensorflow)中的值,但您可以很容易地看到不同变量的形状