我试图将用户定义的参数传递给scrapy的蜘蛛.任何人都可以建议如何做到这一点?
我在-a某处读到了一个参数,但不知道如何使用它.
在 NumPy 中,我会做
a = np.zeros((4, 5, 6))
a = a[:, :, np.newaxis, :]
assert a.shape == (4, 5, 1, 6)
Run Code Online (Sandbox Code Playgroud)
如何在 PyTorch 中做同样的事情?
我已经阅读了 TF 页面和一些关于使用 prefetch() 和 cache() 来加速模型输入管道的帖子,并尝试在我的数据上实现它。Cache() 按预期为我工作,即在第一个纪元中从 dist 读取数据,在所有后续纪元中它只是从内存中读取数据。但我在使用 prefetch() 时遇到很多困难,我真的不明白何时以及如何使用它。有人可以帮我吗?我真的需要一些帮助。我的应用程序是这样的:我有一组大型 TFRecord 文件,每个文件都包含一些在馈送到我的网络之前要处理的原始记录。它们将被混合(不同的样本流),所以我要做的是:
def read_datasets(pattern, numFiles, numEpochs=125, batchSize=1024, take=dataLength):
files = tf.data.Dataset.list_files(pattern)
def _parse(x):
x = tf.data.TFRecordDataset(x, compression_type='GZIP')
return x
np = 4 # half of the number of CPU cores
dataset = files.interleave(_parse, cycle_length=numFiles, block_length=1, num_parallel_calls=np)\
.map(lambda x: parse_tfrecord(x), num_parallel_calls=np)
dataset = dataset.take(take)
dataset = dataset.batch(batchSize)
dataset = dataset.cache()
dataset = dataset.prefetch(buffer_size=10)
dataset = dataset.repeat(numEpochs)
return dataset
Run Code Online (Sandbox Code Playgroud)
interleave 函数中的 parse_tfrecord(x) 函数是数据应用于模型之前所需的预处理,我的猜测是预处理时间与网络的批处理时间相当。我的整个数据集(包括所有输入文件)包含大约 500 批 1024 个样本。我的问题是:
1-如果我进行缓存,我真的需要预取吗?
2- 映射、批处理、缓存、预取和重复的顺序是否正确? …
我尝试了几种加载google news word2vec向量的方法(https://code.google.com/archive/p/word2vec/):
en_nlp = spacy.load('en',vector=False)
en_nlp.vocab.load_vectors_from_bin_loc('GoogleNews-vectors-negative300.bin')
Run Code Online (Sandbox Code Playgroud)
以上给出:
MemoryError: Error assigning 18446744072820359357 bytes
Run Code Online (Sandbox Code Playgroud)
我也试过.gz打包向量; 或者使用gensim将它们加载并保存为新格式:
from gensim.models.word2vec import Word2Vec
model = Word2Vec.load_word2vec_format('GoogleNews-vectors-negative300.bin', binary=True)
model.save_word2vec_format('googlenews2.txt')
Run Code Online (Sandbox Code Playgroud)
然后,该文件包含每行上的单词及其单词向量.我试着加载它们:
en_nlp.vocab.load_vectors('googlenews2.txt')
Run Code Online (Sandbox Code Playgroud)
但它返回"0".
这样做的正确方法是什么?
更新:
我可以将自己创建的文件加载到spacy中.我在每一行使用带有"string 0.0 0.0 ...."的test.txt文件.然后使用.bzip2将此txt压缩到test.txt.bz2.然后我创建一个spacy兼容的二进制文件:
spacy.vocab.write_binary_vectors('test.txt.bz2', 'test.bin')
Run Code Online (Sandbox Code Playgroud)
我可以加载到spacy:
nlp.vocab.load_vectors_from_bin_loc('test.bin')
Run Code Online (Sandbox Code Playgroud)
这有效!但是,当我为googlenews2.txt执行相同的过程时,我收到以下错误:
lib/python3.6/site-packages/spacy/cfile.pyx in spacy.cfile.CFile.read_into (spacy/cfile.cpp:1279)()
OSError:
Run Code Online (Sandbox Code Playgroud) 从Android支持库v23.4.0升级到v24.0.0时,以编程方式将高程设置为0,AppBarLayout停止工作:
appBayLayout.setElevation(0);
Run Code Online (Sandbox Code Playgroud)
在XML中设置高程时它确实有效.
我有一长串代码,我希望在多行之间分解.我使用什么,语法是什么?
例如,添加一串字符串:
val text = "This " + "is " + "a " + "long " + "long " + "line"
Run Code Online (Sandbox Code Playgroud) 如何从预先训练的 PyTorch 模型(例如 ResNet 或 VGG)中提取特定层的特征,而无需再次进行前向传递?
我想使用最先进的 LM T5 来获取句子嵌入向量。我找到了这个存储库https://github.com/UKPLab/sentence-transformers 据我所知,在 BERT 中我应该将第一个标记作为 [CLS] 标记,它将是句子嵌入。在此存储库中,我在 T5 模型上看到相同的行为:
cls_tokens = output_tokens[:, 0, :] # CLS token is first token
Run Code Online (Sandbox Code Playgroud)
这种行为正确吗?我从 T5 中获取了编码器并用它编码了两个短语:
"I live in the kindergarden"
"Yes, I live in the kindergarden"
Run Code Online (Sandbox Code Playgroud)
它们之间的余弦相似度仅为“0.2420”。
我只需要了解句子嵌入是如何工作的——我应该训练网络来寻找相似性以获得正确的结果吗?或者我的基础预训练语言模型就足够了?
我最近从retroft-beta1升级,这是有效的.我有以下API接口:
public interface Service {
@POST("path")
Observable<Object> service();
}
Run Code Online (Sandbox Code Playgroud)
以下电话:
service.service()
.observeOn(AndroidSchedulers.mainThread())
.subscribe();
Run Code Online (Sandbox Code Playgroud)
它会抛出NetworkOnMainThreadException.但这是在改造beta1.
python ×6
pytorch ×3
android ×2
nlp ×2
kotlin ×1
line-breaks ×1
long-lines ×1
retrofit ×1
rx-java ×1
scrapy ×1
spacy ×1
syntax ×1
tensorflow ×1
web-crawler ×1
word2vec ×1