Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何通过从tensorflow图中获取正确的占位符来向BERT提供我自己的数据_Tensorflow_Ner_Bert Language Model - Fatal编程技术网

如何通过从tensorflow图中获取正确的占位符来向BERT提供我自己的数据

如何通过从tensorflow图中获取正确的占位符来向BERT提供我自己的数据,tensorflow,ner,bert-language-model,Tensorflow,Ner,Bert Language Model,我正试着为内尔对伯特进行微调。我已经从这里下载了一个检查点() 我已使用以下代码加载会话和图表: model = "./cased_L-12_H-768_A-12/bert_model" new_saver = tf.train.import_meta_graph(model + ".ckpt.meta") new_saver.restore(sess, model + '.ckpt') graph = tf.get_default_graph() 现在,我试图从这个图中获取输入占位符,以创建

我正试着为内尔对伯特进行微调。我已经从这里下载了一个检查点()

我已使用以下代码加载会话和图表:

model = "./cased_L-12_H-768_A-12/bert_model"
new_saver = tf.train.import_meta_graph(model + ".ckpt.meta")
new_saver.restore(sess, model + '.ckpt')
graph = tf.get_default_graph()
现在,我试图从这个图中获取输入占位符,以创建我自己的提要并定义我自己的损失函数。我使用以下代码检查图形:

op = sess.graph.get_operations()
[m.values() for m in op]
我发现的唯一占位符如下所示:

[(<tf.Tensor 'Placeholder:0' shape=(1, 128) dtype=int32>,),
 (<tf.Tensor 'Placeholder_1:0' shape=(1, 128) dtype=int32>,),
 (<tf.Tensor 'Placeholder_2:0' shape=(1, 128) dtype=int32>,),
[(,),
(,),
(,),
我认为这些占位符不正确,原因如下:

  • 我希望它们的大小为(无,512),因为此BERT模型接受最大512的序列长度,批大小不应预先确定。根据我在这里看到的大小,此BERT模型一次接受最大128的1个序列。这是为什么

  • 我相信我们必须输入一组序列,它们的长度和相应的标签。在这三个占位符中,哪个是哪个


  • 对于下游任务,伯特模型的典型使用需要重建图形,并从预训练模型加载权重/偏差值,如
    run\u classifier.py
    等示例脚本中所做的那样

    通过自己定义占位符,并在构建图形时将它们(作为模型构造函数的输入)提供给模型,可以以旧的方式运行模型


    请注意,
    is\u training
    在BertModel中定义为布尔变量,但不是张量,如果您还想在其中输入占位符,则需要对代码进行一些小的更改。

    对于下游任务,BERT模型的典型使用需要重建图形并从预训练模型加载权重/偏差值,如中所做的那样像
    这样的示例脚本运行_classifier.py

    通过自己定义占位符,并在构建图形时将它们(作为模型构造函数的输入)提供给模型,可以以旧的方式运行模型


    请注意,
    is\u training
    在BertModel中定义为bool变量,但不是张量,如果您还想在其中输入占位符,则需要进行一些小的代码更改。

    如果您只使用它,这会简单得多。使用
    hub.Module
    加载嵌入,并设置
    trainable=True
    。谢谢。我理解。我我希望我能用老式的方式来做。如果你只使用它,这会简单得多。使用
    hub.Module
    加载嵌入,并设置
    trainable=True
    。谢谢。我理解。我希望我能用老式的方式来做。