1

我有 tensorflow 对象(self.rec_fmap_clone),它在图形加载期间具有未知的形状,并且在运行期间具有一定的形状和值。

def __init__(self,fatness,image_shape, vocab, r_vocab, num_classes,rnn_cells_num):
           ......
           ......          
           self.rec_fmap_clone = roi_pooling(net, self.in_boxes, pool_height=self.poolheight, pool_width=self.poolwidth) #shape is (1, 20, 256, 1, 32)

           if not(self.rec_fmap_clone.get_shape()==None):
              self.rec_fmap = tf.identity(self.rec_fmap_clone)
              shape=np.shape(self.rec_fmap)
              self.rec_fmap=np.reshape(self.rec_fmap, (shape[1],shape[2],shape[3],shape[4]))
              self.rec_fmap=tf.transpose(self.rec_fmap, perm=[0, 2, 3, 1])
           else:
              self.rec_fmap=tf.ones([config.train.input_labels_size, 1, 32, 256], tf.float32)
           with slim.arg_scope([slim.conv2d],normalizer_fn=slim.batch_norm,weights_initializer=tf.truncated_normal_initializer(stddev=0.01),weights_regularizer=slim.l2_regularizer(0.0005)):
           classes = slim.conv2d(self.rec_fmap, self.num_classes, [1, 13])
           pattern = slim.fully_connected(slim.flatten(classes), self.rnn_cells_num)  # patterns number

       ........
       .......
def run(self, input_dat, in_boxes, labels):
        return self.sess.run([self.rec_fmap_clone, self.rec_fmap,self.global_step,self.learning_rate,self.loss,self.opt_loss],feed_dict={self.input_dat: input_dat, self.in_boxes: in_boxes, self.input_labels:labels}) 

在图形加载期间,self.rec_fmap_clone.get_shape() gave TensorShape(None). So the process went into else loop.

但在运行期间,self.rec_fmap_clone具有一定的形状。因为我检查了 self.sess.run 的返回值和观察值。

return self.sess.run([self.rec_fmap_clone, self.rec_fmap,self.global_step,self.learning_rate,self.loss,self.opt_loss],feed_dict={self.input_dat: input_dat, self.in_boxes: in_boxes, self.input_labels:labels}) 

但问题是在运行过程中,进程永远不会进入if not loop and always goes into else loop.Bucause sess.run 输出显示 self.rec_fmap 始终为 1。

在运行期间,为什么进程不进入if not loop.

4

0 回答 0