我有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
。