tensorflow得到图的所有节点名称以及得到节点输出

 # 默认图的所有节点名称
 # tensor_name_list = [tensor.name for tensor in tf.get_default_graph().as_graph_def().node]
 #图graph的所有节点名称
 # tensor_name_list = [tensor.name for tensor in graph.as_graph_def().node]
 # print(tensor_name_list)
 #可训练的节点名称
 # variable_names = [v.name for v in tf.trainable_variables()]
   #数据处理
   string = '设置一个随机种子'
   char_list = ['[CLS]'] + list(string) +['[SEP]']
   #不做masked处理
   mask_list = [1] * (len(string)+2)
   #不做分词处理
   seg_list = [0] * (len(string)+2)
   
   # 根据bert的词表做一个char_to_id的操作
   # 未登录词会报错,更改报错代码使未登录词时为'[UNK]'
   # 也可以自己实现
   token = tokenization.FullTokenizer(vocab_file='chinese_L-12_H-768_A-12/vocab.txt')
   char_list = token.convert_tokens_to_ids(char_list)

   char_lists = [char_list]
   mask_lists = [mask_list]
   seg_lists = [seg_list]
   
   input_ids = sess.graph.get_tensor_by_name('input_ids:0')
   input_mask = sess.graph.get_tensor_by_name('input_masks:0')
   segment_ids = sess.graph.get_tensor_by_name('segment_ids:0')
   
    # bert12层transformer,取最后一层的输出
    output = sess.graph.get_tensor_by_name('bert/encoder/layer_11/output/LayerNorm/batchnorm/add_1:0')
   
   feed_data = {input_ids: np.asarray(char_lists), input_mask: np.asarray(mask_lists), segment_ids: np.asarray(seg_lists)}
   
   embedding = sess.run(output, feed_dict=feed_data)
   #bert输出向量结果分批次没有节点,这里reshape成bert_model.get_sequence_output()的形状
   embedding = np.reshape(embedding, (len(char_lists), len(char_lists[0]), -1))
  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您可以使用TensorFlow的`inspect_checkpoint`模块来获取ckpt文件中的所有变量,然后根据变量名找到要输出节点名称。 以下是一个示例代码,它列出了给定ckpt文件中的所有变量名称: ```python import tensorflow as tf from tensorflow.python.tools import inspect_checkpoint ckpt_path = "/path/to/your/ckpt/file" # List all variables in the checkpoint file inspect_checkpoint.print_tensors_in_checkpoint_file(ckpt_path, tensor_name='', all_tensors=True) ``` 输出将类似于以下内容: ``` tensor_name: dense/kernel (DT_FLOAT) [784,10] [[ 0.02416449 -0.0475637 0.0556073 ... -0.05033178 0.04500757 -0.02516449] [-0.05762496 -0.03277328 -0.00278839 ... 0.06256668 -0.03260396 -0.03537507] ... [-0.0303502 0.03090762 -0.04702229 ... 0.04498903 0.04480387 0.01993509] [-0.04007631 -0.00890576 0.01127442 ... -0.01387329 -0.00065558 0.00172326]] tensor_name: dense/bias (DT_FLOAT) [10] [ 0.02104062 -0.02318692 -0.02234132 -0.00386816 0.03873952 0.02142542 -0.0235577 0.0084792 -0.02807822 0.00934654] ... ``` 在这个例子中,`dense/kernel`和`dense/bias`是两个变量,它们分别对应Dense层的权重和偏差。您可以使用这些变量名称来找到这些节点输出名称。例如,如果您想输出Dense层的激活值,则可以使用以下代码: ```python import tensorflow as tf ckpt_path = "/path/to/your/ckpt/file" with tf.Session() as sess: saver = tf.train.import_meta_graph(ckpt_path + '.meta') saver.restore(sess, ckpt_path) # Find the output tensor by name output_tensor = sess.graph.get_tensor_by_name("dense/BiasAdd:0") # Run the session to get the output output_value = sess.run(output_tensor, feed_dict={...}) ``` 在这个例子中,`dense/BiasAdd:0`是Dense层的输出节点名称,您可以使用`sess.graph.get_tensor_by_name()`方法来获取它。然后,您可以使用`sess.run()`方法来运行该节点并获得输出值。请注意,您需要将正确的输入数据提供给`feed_dict`参数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值