如何在Tensorflow中获取张量的值

我正在训练对医疗数据(图像)执行cnn算法,我需要恢复最后一层的张量值才能执行其他计算。

def _create_conv_net(X,image_z,image_width,image_height,image_channel,phase,drop,n_class=1):

inputX = tf.reshape(X,[-1,image_channel])  # shape=(?,32,1)

#inputX= tf.keras.backend.reshape(X,image_channel])

#print('inputs',inputX.shape)
# Vnet model
# layer1->convolution
layer0 = conv_bn_relu_drop(x=inputX,kernal=(3,3,16),phase=phase,drop=drop,scope='layer0')
layer1 = conv_bn_relu_drop(x=layer0,16,scope='layer1')
layer1 = resnet_Add(x1=layer0,x2=layer1)
# down sampling1
down1 = down_sampling(x=layer1,32),scope='down1')
# layer2->convolution
layer2 = conv_bn_relu_drop(x=down1,scope='layer2_1')
layer2 = conv_bn_relu_drop(x=layer2,scope='layer2_2')
layer2 = resnet_Add(x1=down1,x2=layer2)
# down sampling2
down2 = down_sampling(x=layer2,64),scope='down2')
# layer3->convolution
layer3 = conv_bn_relu_drop(x=down2,64,scope='layer3_1')
layer3 = conv_bn_relu_drop(x=layer3,scope='layer3_2')
layer3 = conv_bn_relu_drop(x=layer3,scope='layer3_3')
layer3 = resnet_Add(x1=down2,x2=layer3)
# down sampling3
down3 = down_sampling(x=layer3,128),scope='down3')
# layer4->convolution
layer4 = conv_bn_relu_drop(x=down3,128,scope='layer4_1')
layer4 = conv_bn_relu_drop(x=layer4,scope='layer4_2')
layer4 = conv_bn_relu_drop(x=layer4,scope='layer4_3')
layer4 = resnet_Add(x1=down3,x2=layer4)
# down sampling4
down4 = down_sampling(x=layer4,256),scope='down4')
# layer5->convolution
layer5 = conv_bn_relu_drop(x=down4,256,scope='layer5_1')
layer5 = conv_bn_relu_drop(x=layer5,scope='layer5_2')
layer5 = conv_bn_relu_drop(x=layer5,scope='layer5_3')
layer5 = resnet_Add(x1=down4,x2=layer5)

# layer9->deconvolution
deconv1 = deconv_relu(x=layer5,scope='deconv1')
# layer8->convolution
layer6 = crop_and_concat(layer4,deconv1)
_,Z,H,W,_ = layer4.get_shape().as_list()
layer6 = conv_bn_relu_drop(x=layer6,image_z=Z,height=H,width=W,scope='layer6_1')
layer6 = conv_bn_relu_drop(x=layer6,scope='layer6_2')
layer6 = conv_bn_relu_drop(x=layer6,scope='layer6_3')
layer6 = resnet_Add(x1=deconv1,x2=layer6)
# layer9->deconvolution
deconv2 = deconv_relu(x=layer6,scope='deconv2')
# layer8->convolution
layer7 = crop_and_concat(layer3,deconv2)
_,_ = layer3.get_shape().as_list()
layer7 = conv_bn_relu_drop(x=layer7,scope='layer7_1')
layer7 = conv_bn_relu_drop(x=layer7,scope='layer7_2')
layer7 = conv_bn_relu_drop(x=layer7,scope='layer7_3')
layer7 = resnet_Add(x1=deconv2,x2=layer7)
# layer9->deconvolution
deconv3 = deconv_relu(x=layer7,scope='deconv3')
# layer8->convolution
layer8 = crop_and_concat(layer2,deconv3)
_,_ = layer2.get_shape().as_list()
layer8 = conv_bn_relu_drop(x=layer8,scope='layer8_1')
layer8 = conv_bn_relu_drop(x=layer8,scope='layer8_2')
layer8 = conv_bn_relu_drop(x=layer8,scope='layer8_3')
layer8 = resnet_Add(x1=deconv3,x2=layer8)
# layer9->deconvolution
deconv4 = deconv_relu(x=layer8,scope='deconv4')
# layer8->convolution
layer9 = crop_and_concat(layer1,deconv4)
_,_ = layer1.get_shape().as_list()
layer9 = conv_bn_relu_drop(x=layer9,scope='layer9_1')
layer9 = conv_bn_relu_drop(x=layer9,scope='layer9_2')
layer9 = conv_bn_relu_drop(x=layer9,scope='layer9_3')
layer9 = resnet_Add(x1=deconv4,x2=layer9)
# layer14->output
output_map = conv_sigmod(x=layer9,kernal=(1,1,n_class),scope='output')
y =tf.shape(output_map)
#print('output map shape of output',y)

sess = tf.InteractiveSession()
print(output_map.eval())

'''with tf.Session() as s:
         tf.initialize_all_variables().run()
         xx= tf.rank(output_map)
         print ('rank_output_map is ',s.run(xx))'''


return output_map

我使用了两种方法来获取张量的值:

  1. tensor.eval()
  2. session.run(张量)

但是如果您能帮助我,我也有同样的错误。 enter image description here

csuct882 回答:如何在Tensorflow中获取张量的值

您可以只对张量执行sess.run以获取值。首先,您需要张量。您可以在build_model中为其添加一个名称,方法是添加一个name参数(可以对任何张量执行此操作),例如:

Layer_name = tf.add(tf.multiply(Flat,W1),b1,name="Layer_name")

稍后,您可以获取该层的张量并对其进行评估:

with tf.Session() as sess:
    Layer_name = tf.get_default_graph().get_tensor_by_name('Layer_name:0')
    FC1_values = sess.run(Layer_name,feed_dict={x: input_img_arr})
本文链接:https://www.f2er.com/2672032.html

大家都在问