小编Ash*_*'Sa的帖子

BERT 词嵌入的大小/范数有何意义?

我们通常用余弦相似度来比较词嵌入之间的相似度,但这只考虑了向量之间的角度,而不考虑范数。使用 word2vec,随着单词在更多不同的上下文中使用,向量的范数会减小。因此,停用词接近于 0,并且非常独特、高含义的单词往往是大向量。BERT 是上下文敏感的,因此这个解释并不完全涵盖 BERT 嵌入。有谁知道矢量幅度对于 BERT 有何意义?

nlp bert-language-model

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

ModuleNotFoundError: 没有名为“fasttext”的模块

我尝试fasttext使用两个渠道通过 conda安装:

conda install -c conda-forge fasttext

conda install -c conda-forge/label/cf201901 fasttext

根据(https://anaconda.org/conda-forge/fasttext)。

我正在使用以下命令导入:import fasttext 但是,导入失败并显示错误:

ModuleNotFoundError Traceback (最近一次调用最后一次) in ----> 1 import fasttext

ModuleNotFoundError: 没有名为“fasttext”的模块

但是,尝试以较旧的方式导入它import fastText,但失败了。

已经尝试过的pythonpython3,这两者的失败。

我想避免使用安装它pip并使用conda.

conda list显示fasttext正在安装。其输出如下所示:

fasttext 0.2.0 hfc679d8_1 conda-forge/label/cf201901

的输出python -c 'import sys; print(sys.path)如下:

['', '/<dir>/<dir>/anaconda3/lib/python37.zip', '/<dir>/<dir>/anaconda3/lib/python3.7', '/<dir>/<dir>/anaconda3/lib/python3.7/lib-dynload', '/<dir>/<dir>/anaconda3/lib/python3.7/site-packages']

python anaconda conda fasttext

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

从熊猫数据框中删除句子长度超过特定单词长度的行

我想从熊猫数据框中删除行,其中包含来自特定列的字符串,该列的长度大于所需的长度。

例如:

输入框:

X    Y
0    Hi how are you.
1    An apple
2    glass of water
3    I like to watch movie
Run Code Online (Sandbox Code Playgroud)

现在,说我想从数据帧中删除具有长度大于或等于4的单词字符串的行。

所需的输出帧必须是:

X    Y
1    An apple
2    glass of water
Run Code Online (Sandbox Code Playgroud)

删除“ X”列中值为0.3的行,因为第0列中的单词数为4,第3列为5。

python string split pandas

6
推荐指数
1
解决办法
201
查看次数

BERT 输出不确定

BERT 输出不是确定性的。当我输入相同的输入时,我希望输出值是确定性的,但是我的 bert 模型中的值正在发生变化。听起来很尴尬,相同的值被返回两次,一次。也就是说,一旦出现另一个值,就会出现相同的值并重复。如何使输出具有确定性?让我展示我的代码片段。我使用的模型如下。

对于 BERT 实现,我使用了 Huggingface 实现的 BERT pytorch 实现。这是 pytorch 领域非常有名的模型 ri 实现。[链接] https://github.com/huggingface/pytorch-pretrained-BERT/

        tokenizer = BertTokenizer.from_pretrained(self.bert_type, do_lower_case=self.do_lower_case, cache_dir=self.bert_cache_path)
        pretrain_bert = BertModel.from_pretrained(self.bert_type, cache_dir=self.bert_cache_path)
        bert_config = pretrain_bert.config
Run Code Online (Sandbox Code Playgroud)

得到这样的输出

        all_encoder_layer, pooled_output = self.model_bert(all_input_ids, all_segment_ids, all_input_mask)

        # all_encoder_layer: BERT outputs from all layers.
        # pooled_output: output of [CLS] vec.

Run Code Online (Sandbox Code Playgroud)

pooled_output

tensor([[-3.3997e-01,  2.6870e-01, -2.8109e-01, -2.0018e-01, -8.6849e-02,

tensor([[ 7.4340e-02, -3.4894e-03, -4.9583e-03,  6.0806e-02,  8.5685e-02,

tensor([[-3.3997e-01,  2.6870e-01, -2.8109e-01, -2.0018e-01, -8.6849e-02,

tensor([[ 7.4340e-02, -3.4894e-03, -4.9583e-03,  6.0806e-02,  8.5685e-02,
Run Code Online (Sandbox Code Playgroud)

对于所有编码器层,情况是相同的, - 一次两次相同。

我从bert中提取词嵌入特征,情况是一样的。

wemb_n
tensor([[[ 0.1623,  0.4293, …
Run Code Online (Sandbox Code Playgroud)

nlp transformer-model deep-learning bert-language-model

6
推荐指数
1
解决办法
1205
查看次数

出现错误“无法导入 PIL.Image。使用 `array_to_img` 需要 PIL。”

我是机器学习的初学者,所以我试图创建一个模型来识别从 Keras 博客引用的图像。我已经在 Windows 10 上安装了 Anaconda 3 和所有软件包,如 tensorflow、keras、scipy、numpy、pandas

from keras.preprocessing.image import ImageDataGenerator, array_to_img, img_to_array, load_img
    from keras.models import Sequential
    from keras.layers import Conv2D, MaxPooling2D
    from keras.layers import Activation, Dropout, Flatten, Dense

    datagen = ImageDataGenerator(
    rotation_range=40,
    width_shift_range=0.2,
    height_shift_range=0.2,
    shear_range=0.2,
    zoom_range=0.2,
    horizontal_flip=True,
    fill_mode='nearest')
    img = load_img('E:/ML_R&D/training_set/cats/cat.3919.jpg') # this Line is giving me error
Run Code Online (Sandbox Code Playgroud)

我正在使用 conda 命令和使用 pip 的枕头,但是当我运行从 keras 博客中获取的代码时,出现错误。

machine-learning python-imaging-library python-3.x keras

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

BERT 的表现比 word2vec 差

我正在尝试使用 BERT 解决文档排名问题。我的任务很简单。我必须对输入文档进行相似度排名。这里唯一的问题是我没有标签 - 所以它更像是一个定性分析。

我正在尝试一系列文档表示技术——主要是 word2vec、para2vec 和 BERT。

对于 BERT,我遇到了Hugging face - Pytorch库。我微调了 bert-base-uncased 模型,大约有 150,000 个文档。我运行了 5 个 epoch,批量大小为 16,最大序列长度为 128。但是,如果我比较 Bert 表示与 word2vec 表示的性能,出于某种原因,word2vec 现在对我来说表现更好。对于 BERT,我使用最后四层来获取表示。

我不太确定为什么微调模型不起作用。我读了这个文件,而这个其他链接也是说,BERT执行以及何时微调的分类任务。但是,由于我没有标签,因此我按照论文中的方法对其进行了微调 - 以无监督的方式。

此外,我的文件长度差异很大。所以我现在正在向他们发送明智的句子。最后,无论如何我必须对词嵌入进行平均以获得句子嵌入。关于更好方法的任何想法?我还在这里读到- 有不同的方法可以对词嵌入进行池化以获得固定的嵌入。想知道是否有比较哪种池化技术效果更好?

对更好地训练 BERT 或更好的池化方法的任何帮助将不胜感激!

machine-learning unsupervised-learning word2vec deep-learning bert-language-model

5
推荐指数
1
解决办法
665
查看次数

pip install bert后为什么不能在bert中导入函数

我是 bert 的初学者,我正在尝试使用 GitHub 上提供的 bert 文件:https : //github.com/google-research/bert

但是pip install bert在终端中安装bert后,我无法从bert导入文件(如run_classifier、优化等)。我尝试在 jupiter notebook 中运行以下代码:

import bert
from bert import run_classifier
Run Code Online (Sandbox Code Playgroud)

错误是:

ImportError: cannot import name 'run_classifier'
Run Code Online (Sandbox Code Playgroud)

然后我在中找到了名为“bert”的文件\anaconda3\lib\python3.6\site-packages,里面没有名为“run_classifier”、“optimization”等的python文件。所以我从 GitHub 下载了这些文件,并自己将它们放入文件 'bert' 中。完成此操作后,我可以导入 run_classifier。

然而,另一个问题出现了。尽管我可以导入它们,但我无法使用文件中的函数。例如,convert_to_unicodetokenization.py 中有一个函数:

Help on module bert.tokenization in bert:

NAME

    bert.tokenization - Tokenization classes.    
FUNCTIONS

    convert_to_unicode(text)
    Converts `text` to Unicode (if it's not already), assuming utf-8 input.
Run Code Online (Sandbox Code Playgroud)

然后我尝试了这个:

import tokenization from bert
convert_to_unicode('input.txt')
Run Code Online (Sandbox Code Playgroud)

错误是:

NameError: name 'convert_to_unicode' is not defined
Run Code Online (Sandbox Code Playgroud)

然后我尝试: …

python nlp bert-language-model

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

如何在numpy数组的给定行中保留N个最小元素?

给定一个二维 numpy 矩阵,如何保留每行中的 N 个最小元素并将其余元素更改为0(零)。

例如:N=3 输入数组:

1   2   3   4   5
4   3   6   1   0
6   5   3   1   2
Run Code Online (Sandbox Code Playgroud)

预期输出:

1   2   3   0   0
0   3   0   1   0
0   0   3   1   2
Run Code Online (Sandbox Code Playgroud)

以下是我尝试过的代码,它可以工作:

# distance_matrix is the given 2D array
N=3
for i in range(distance_matrix.shape[0]):
    n_th_largest = np.sort(distance_matrix[i])[N]
    for j in range(distance_matrix.shape[1]):
        distance_matrix[i][j] = np.where(distance_matrix[i][j]<n_th_largest,distance_matrix[i][j],0)

# return distance_matrix
Run Code Online (Sandbox Code Playgroud)

但是,此操作涉及迭代每个元素。有没有更快的方法来解决这个使用np.argsort()或任何其他功能?

python sorting import numpy

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

如何在 CNN 中添加 Dropout

我正在使用 CNN 训练 Fashion MNIST 数据。由于过度拟合,我尝试添加 Dropout 层。但它不起作用

在我添加 Dropout 之前,模型运行良好。

def fashion_model()
    batch_size = 64
    epochs = 20
    num_classes = 10
    fashion_drop_model = Sequential()
    fashion_drop_model.add(Conv2D(32, kernel_size=(3, 3),activation='linear',padding='same',input_shape=(28,28,1)))
    fashion_drop_model.add(LeakyReLU(alpha=0.1))
    fashion_drop_model.add(MaxPooling2D((2, 2),padding='same'))
    fashion_drop_model.add(Dropout(0.25))

    fashion_drop_model.add(Conv2D(64, (3, 3), activation='linear',padding='same'))
    fashion_drop_model.add(LeakyReLU(alpha=0.1))
    fashion_drop_model.add(MaxPooling2D(pool_size=(2, 2),padding='same'))
    fashion_drop_model.add(Dropout(0.25))

    fashion_drop_model.add(Conv2D(128, (3, 3), activation='linear',padding='same'))
    fashion_drop_model.add(LeakyReLU(alpha=0.1))                  
    fashion_drop_model.add(MaxPooling2D(pool_size=(2, 2),padding='same'))
    fashion_drop_model.add(Dropout(0.4))

    fashion_drop_model.add(Flatten())
    fashion_drop_model.add(Dense(128, activation='linear'))
    fashion_drop_model.add(LeakyReLU(alpha=0.1))           
    fashion_drop_model.add(Dropout(0.3))
    fashion_drop_model.add(Dense(num_classes, activation='softmax'))

    return fashion_drop_model.summary()

fashion_model()
Run Code Online (Sandbox Code Playgroud)

我得到的错误是: UnboundLocalError: local variable 'a' referenced before assignment

PS:在对代码逐行进行简短的演练后,我认为错误在第 8 行(fashion_drop_model.add(Dropout(0.25))

python machine-learning deep-learning conv-neural-network keras

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

导入错误:请从 https://www.github.com/nvidia/apex 安装 apex 以使用分布式和 fp16 训练

无法为 bert 模型的分布式和 fp16 训练安装 apex 我试图通过从 github 克隆 apex 来安装并尝试使用 pip 安装软件包

我试图通过使用以下命令从 git hub 克隆来安装 apex:

git 克隆https://github.com/NVIDIA/apex.git

和 cd apex 转到 apex 目录并尝试使用以下 pip 命令安装软件包:

pip install -v --no-cache-dir --global-option="--cpp_ext" --global-option="--cuda_ext"

完整代码是:

def main(server_ip,server_port,local_rank,no_cuda,fp16,train_batch_size,gradient_accumulation_steps,seed,do_train,do_eval,output_dir,task_name,data_dir,do_lower_case,bert_model,num_train_epochs,cache_dir,learning_rate,warmup_proportion,loss_scale,max_seq_length):
        if server_ip and server_port:
            # Distant debugging - see https://code.visualstudio.com/docs/python/debugging#_attach-to-a-local-script
            import ptvsd
            print("Waiting for debugger attach")
            ptvsd.enable_attach(address=(server_ip, server_port), redirect_output=True)
            ptvsd.wait_for_attach()

        processors = {"ner":NerProcessor}
        print(processors)

        if local_rank == -1 or no_cuda:
            device = torch.device("cuda" if torch.cuda.is_available() and not no_cuda else "cpu")
            n_gpu = …
Run Code Online (Sandbox Code Playgroud)

nlp python-3.x deep-learning pytorch

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

上下文嵌入和词嵌入有什么区别

我试图理解深度学习模型的嵌入概念。

我了解使用word2vec如何解决使用 one-hot 向量的局限性。

然而,最近我看到大量的博客文章指出 ELMo、BERT 等谈论上下文嵌入。

词嵌入与上下文嵌入有何不同?

artificial-intelligence machine-learning deep-learning

3
推荐指数
2
解决办法
3933
查看次数

无法识别 Keras EarlyStopping

我在我的 U-net 模型中使用 Early Stopping 但它引发了错误

File "main.py", line 18, in <module>
    earlystopper = EarlyStopping(monitor='val_loss', min_delta=0, patience=15, verbose=1, mode='auto', baseline=None, restore_best_weights=False)
NameError: name 'EarlyStopping' is not defined
Run Code Online (Sandbox Code Playgroud)

但是 Keras 回调函数运行良好

我不明白问题出在哪里?任何帮助都得到承认。

from model import *
from data import *

data_gen_args = dict(rotation_range=0.2,
                width_shift_range=0.05,
                height_shift_range=0.05,
                shear_range=0.05,
                zoom_range=0.05,
                horizontal_flip=True,
                fill_mode='nearest')
myGene = trainGenerator(2,'data/membrane/train','image','label',data_gen_args,save_to_dir = None)

model = unet()
model_checkpoint = ModelCheckpoint('unet_membrane.hdf5', monitor='loss',verbose=1, save_best_only=True)
earlystopper = EarlyStopping(monitor='val_loss', min_delta=0, patience=15, verbose=1, mode='auto', baseline=None, restore_best_weights=False)
model.fit_generator(myGene,steps_per_epoch=300,epochs=200,callbacks=[model_checkpoint, earlystopper])

testGene = testGenerator("data/membrane/test")
results = model.predict_generator(testGene,86,verbose=1)
saveResult("data/membrane/test",results)
Run Code Online (Sandbox Code Playgroud)

python-3.x keras tensorflow

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

连接数据框的两列值

我有一个如下的数据框:

     Name  Age
0    Alex   10
1     Bob   12
2  Clarke   13
Run Code Online (Sandbox Code Playgroud)

数据框创建为:

data = [['Alex',10],['Bob',12],['Clarke',13]]
df = pd.DataFrame(data,columns=['Name','Age'])
Run Code Online (Sandbox Code Playgroud)

我想执行两列的字符串连接为:

     Name      Age
0    10 Alex   10 
1    12 Bob    12 
2    13 Clarke 13 
Run Code Online (Sandbox Code Playgroud)

我尝试使用df["Name"] = df["Age"]+" "+df["Name"],导致以下错误:

回溯(最近一次调用):文件“”,第 1 行,在文件“/anaconda3/envs/env1/lib/python3.6/site-packages/pandas/core/ops/common.py”,第 65 行,在new_method 返回方法(self, other) File "/anaconda3/envs/env1/lib/python3.6/site-packages/pandas/core/ops/ INIT.py”,第 343 行,在包装结果 = algorithm_op(lvalues, rvalues, op) 文件“/anaconda3/envs/env1/lib/python3.6/site-packages/pandas/core/ops/array_ops.py”中,行189,在 algorithm_op res_values = na_arithmetic_op(lvalues, rvalues, op) 文件“/anaconda3/envs/env1/lib/python3.6/site-packages/pandas/core/ops/array_ops.py”,第 149 行,在 na_arithmetic_op 结果= masked_arith_op(left, right, op) 文件“/anaconda3/envs/env1/lib/python3.6/site-packages/pandas/core/ops/array_ops.py”,第 111 行,在 masked_arith_op 结果[mask] = op (xrav[mask], …

python dataframe pandas

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