我们通常用余弦相似度来比较词嵌入之间的相似度,但这只考虑了向量之间的角度,而不考虑范数。使用 word2vec,随着单词在更多不同的上下文中使用,向量的范数会减小。因此,停用词接近于 0,并且非常独特、高含义的单词往往是大向量。BERT 是上下文敏感的,因此这个解释并不完全涵盖 BERT 嵌入。有谁知道矢量幅度对于 BERT 有何意义?
我尝试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,但失败了。
已经尝试过的python和python3,这两者的失败。
我想避免使用安装它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']
我想从熊猫数据框中删除行,其中包含来自特定列的字符串,该列的长度大于所需的长度。
例如:
输入框:
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。
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) 我是机器学习的初学者,所以我试图创建一个模型来识别从 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 博客中获取的代码时,出现错误。
我正在尝试使用 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
我是 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)
然后我尝试: …
给定一个二维 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()或任何其他功能?
我正在使用 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
无法为 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) 我试图理解深度学习模型的嵌入概念。
我了解使用word2vec如何解决使用 one-hot 向量的局限性。
然而,最近我看到大量的博客文章指出 ELMo、BERT 等谈论上下文嵌入。
词嵌入与上下文嵌入有何不同?
我在我的 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) 我有一个如下的数据框:
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], …