小编Bel*_*iri的帖子

导入 BERT 时出错:模块“tensorflow._api.v2.train”没有属性“Optimizer”

我尝试在Google Colab中使用bert-tensorflow,但出现以下错误:

-------------------------------------------------- ------------------------- AttributeError Traceback(最近一次调用最后一次) in () 1 import bert ----> 2 from bert import run_classifier_with_tfhub # run_classifier 3 来自 bert 导入优化 4 来自 bert 导入标记化

1 帧 /usr/local/lib/python3.6/dist-packages/bert/optimization.py in () 85 86 ---> 87 class AdamWeightDecayOptimizer(tf.train.Optimizer): 88 """一个基本的 Adam 优化器其中包括“正确的”L2 权重衰减。""" 89

AttributeError:模块“tensorflow._api.v2.train”没有属性“Optimizer”

这是我尝试过的代码:

  1. 安装库:

!pip install --upgrade --force-reinstall tensorflow !pip install --upgrade --force-reinstall tensorflow-gpu !pip install tensorflow_hub !pip install sentencepiece !pip install bert-tensorflow

  1. 运行这段代码:

from sklearn.model_selection import train_test_split import pandas as pd from datetime import …

python classification tensorflow bert-language-model

7
推荐指数
1
解决办法
2万
查看次数

如何选择keras密集层的前k个元素?

我正在尝试执行 ak-max pooling以选择top-k具有 shape 的密集元素(None, 30)。我尝试了一个MaxPooling1D层,但它不起作用,因为 keras 池化层至少需要一个 2d 输入形状。我正在使用以下Lambda图层,但出现以下错误:

layer_1.shape
(None, 30)
layer_2 = Lambda(lambda x: tf.nn.top_k(x, k=int(int(x.shape[-1])/2),
                                                sorted=True, 
                                                name="Top_k_final"))(layer_1)
Run Code Online (Sandbox Code Playgroud)

错误:文件“/usr/local/lib/python3.5/dist-packages/keras/engine/base_layer.py”,第 474 行,调用 output_shape = self.compute_output_shape(input_shape) 文件“/usr/local/lib/ python3.5/dist-packages/keras/layers/core.py", line 652, in compute_output_shape return K.int_shape(x) File "/usr/local/lib/python3.5/dist-packages/keras/backend/ tensorflow_backend.py", line 591, in int_shape return tuple(x.get_shape().as_list()) AttributeError: 'TopKV2' object has no attribute 'get_shape'

python-3.x keras-layer max-pooling

4
推荐指数
1
解决办法
1026
查看次数

在每N个时期结束时保存模型权重

我正在训练NN,并希望在预测阶段每N个时期保存模型权重.我提出这个草案代码,它的灵感来自于@grovina 在这里的回应.请你提出建议吗?提前致谢.

from keras.callbacks import Callback

class WeightsSaver(Callback):
    def __init__(self, model, N):
        self.model = model
        self.N = N
        self.epoch = 0

    def on_batch_end(self, epoch, logs={}):
        if self.epoch % self.N == 0:
            name = 'weights%08d.h5' % self.epoch
            self.model.save_weights(name)
        self.epoch += 1
Run Code Online (Sandbox Code Playgroud)

然后将其添加到fit调用:每5个时期保存一次权重:

model.fit(X_train, Y_train, callbacks=[WeightsSaver(model, 5)])
Run Code Online (Sandbox Code Playgroud)

python callback keras tensorflow

3
推荐指数
1
解决办法
6812
查看次数

如何提取 TREC 文件?

我一直在尝试使用上面的代码将 TREC 文档提取到单独的文本文件中,但出现了一些错误。这是我的 TREC 文件内容的示例,其中包含标记<DOC>和之间的 2 个文档</DOC>

<DOC>
    <DOCNO>
       WSJ910102-0145
    </DOCNO>
    <DOCID>
       910102-0145.
    </DOCID>
    <HL>
       xxxx
    </HL>
    <DATE>
        01/02/91
    </DATE>
    <LP>
       text LP1
    </LP>
    <TEXT>
       text1
    </TEXT>
</DOC>
<DOC>
    <DOCNO>
        WSJ910102-0144
    </DOCNO>
    <DOCID>
        910102-0144.
    </DOCID>
    <HL>
       ....
    </HL>
    <DATE>
       01/02/91
    </DATE>
    <LP>
       text LP2
    </LP>
    <TEXT>
       text2
    </TEXT>
</DOC>
Run Code Online (Sandbox Code Playgroud)

我想在一个单独的文本文件中提取每个文档。我必须获取带有文档编号“DOCNO”的标签“LP”和“TEXT”的内容。这是我的代码:

text=text.replace('\n',' ').replace('\t', ' ')
i=0
txtDoc=''
regexTxt='(<LP>(.*?)</LP>)? <TEXT>(.*?)</TEXT>'
regexDoc='<DOC>(.*?)</DOC>'
regexDocNo='<DOCNO>(.*?)</DOCNO>'
pattern = compile(r'<DOC>(.*?)</DOC>')
iterator = finditer(pattern, text)
count = 0
for match in iterator:
    count +=1 …
Run Code Online (Sandbox Code Playgroud)

python parsing python-3.x

2
推荐指数
1
解决办法
1262
查看次数