我需要使用gensim在推文上训练word2vec表示.与我在gensim上看到的大多数教程和代码不同,我的数据不是原始数据,但已经过预处理.我在包含65k字(包括"未知"标记和EOL标记)的文本文档中有一个字典,并且推文被保存为带有索引的numpy矩阵到这个字典中.下面是一个简单的数据格式示例:
dict.txt
you
love
this
code
Run Code Online (Sandbox Code Playgroud)
推文(5是未知的,6是EOL)
[[0, 1, 2, 3, 6],
[3, 5, 5, 1, 6],
[0, 1, 3, 6, 6]]
Run Code Online (Sandbox Code Playgroud)
我不确定如何处理索引表示.一种简单的方法就是将索引列表转换为字符串列表(即[0,1,2,3,6] - > ['0','1','2','3','6 '))当我把它读入word2vec模型时.然而,这必然是低效的,因为gensim然后将尝试查找用于例如'2'的内部索引.
如何使用gensim以有效的方式加载此数据并创建word2vec表示?
我正在安装CUDA(没有驱动程序)的Ubuntu 14.04虚拟服务器上安装Caffe,使用https://github.com/BVLC/caffe/wiki/Ubuntu-14.04-VirtualBox-VM作为灵感.在安装过程中,我"CPU_ONLY := 1"在构建之前编辑了MakeFile以包含它.然而,似乎Caffe仍在尝试使用GPU.当我尝试运行测试示例时,我收到以下错误:
python python/classify.py examples/images/cat.jpg foo
Traceback (most recent call last):
File "python/classify.py", line 130, in <module>
main(sys.argv)
File "python/classify.py", line 103, in main
channel_swap=channel_swap)
TypeError: __init__() got an unexpected keyword argument 'gpu'
Run Code Online (Sandbox Code Playgroud)
我该如何修复此问题并完全依靠CPU运行?
我有一个小型的Web服务器,可以根据句子获取输入,并需要使用Tensorflow服务返回模型预测.使用我们的单GPU可以很好地工作,但是现在我想启用批处理,以便Tensorflow服务等待一段时间对传入的句子进行分组,然后在GPU上一次处理它们.
我正在使用预先设计的服务器框架和预先设计的批处理框架,使用Tensorflow服务的初始版本.我正在使用--batching标志启用批处理并设置batch_timeout_micros = 10000和max_batch_size = 1000.日志记录确认已启用批处理并且正在使用GPU.
但是,当向服务服务器发送请求时,批处理具有最小的影响.同时发送50个请求几乎在时间使用方面与发送5个请求成线性比例.有趣的是,predict()服务器的功能对每个请求都运行一次(见这里),这表明批处理没有得到正确处理.
我错过了什么吗?如何检查批处理有什么问题?
请注意,这与如何在Tensorflow服务中进行批处理不同?因为该问题仅检查如何从单个客户端发送多个请求,而不是如何启用Tensorflow服务的多个单独请求的幕后批处理.
我有一个我想要使用多处理修改的元素列表.问题是对于某些特定的输入(在尝试之前不可观察),我的部分功能会停止.我已经在概念上用下面的代码展示了这个函数,其中函数sometimes_stalling_processing()偶尔会无限期地停止.
为了将其置于上下文中,我正在使用Web scraper处理一堆链接,并且即使在请求模块中使用超时,其中一些链接也会停止.我尝试了不同的方法(例如使用eventlet),但得出的结论是,在多处理级别处理它可能更容易.
def stable_processing(obs):
...
return processed_obs
def sometimes_stalling_processing(obs):
...
return processed_obs
def extract_info(obs):
new_obs = stable_processing(obs)
try:
new_obs = sometimes_stalling_processing(obs)
except MyTimedOutError: # error doesn't exist, just here for conceptual purposes
pass
return new_obs
pool = Pool(processes=n_threads)
processed_dataset = pool.map(extract_info, dataset)
pool.close()
pool.join()
Run Code Online (Sandbox Code Playgroud)
这个问题(如何在超时后中断多处理.Pool中的任务?)似乎非常相似,但我一直无法将其转换为使用map而不是apply.我也尝试过使用该eventlet软件包,但这不起作用.请注意,我使用的是Python 2.7.
如何pool.map()对个别观察结果进行超时并杀死sometimes_stalling_processing?
我们广泛使用静态类型检查,但我们也需要一些简单的运行时类型检查。我很乐意使用我们的静态类型进行运行时类型检查。我见过 typeguard 和其他库,但我更喜欢更简单的东西。
我在下面尝试过,但assert value in expected_type没有意义。如何创建一个简单的函数来检查字符串是否在 Python 字符串文本中?
from typing_extensions import Literal
def check_str_in_literal(value: str, expected_type: Literal):
assert value in expected_type
Gender = Literal["Male", "Female", "Other"]
def print_gender(gender: Gender):
print(gender)
# Unknown string as it's been retrieved from elsewhere
strRetrievedFromDB = "Male" # type: ignore
check_str_in_literal(strRetrievedFromDB, Gender)
print_gender(strRetrievedFromDB)
Run Code Online (Sandbox Code Playgroud) 我有一个列表,my_list混合数据类型,我想转换成一个numpy数组.但是,我得到了错误TypeError: expected a readable buffer object.见下面的代码.我试图将我的代码基于 NumPy文档.
my_list = [['User_0', '2012-2', 1, 6, 0, 1.0], ['User_0', '2012-2', 5, 6, 0, 1.0], ['User_0', '2012-3', 0, 0, 4, 1.0]]
my_np_array = np.array(my_list, dtype='S30, S8, i4, i4, f32')
Run Code Online (Sandbox Code Playgroud) 我有以下代码
output = T.switch(cond, a, b)
Run Code Online (Sandbox Code Playgroud)
这里cond是一个(N,1)布尔张量,而a和b是(N, M)与数值张量M是相当大的.该条件以行方式运行.
我可以很容易地通过运行开关工作T.repeat()的cond,但是这是相当缓慢.有没有办法在我能够有效地使布尔变量cond决定是否a或b应该归还?
我正在使用scikit-learn的RFECV类来执行功能选择。我对确定一堆变量的相对重要性感兴趣。但是,scikit-learn对于多个变量返回相同的排名(1)。这也可以在他们的示例代码中看到:
>>> from sklearn.datasets import make_friedman1
>>> from sklearn.feature_selection import RFECV
>>> from sklearn.svm import SVR
>>> X, y = make_friedman1(n_samples=50, n_features=10, random_state=0)
>>> estimator = SVR(kernel="linear")
>>> selector = RFECV(estimator, step=1, cv=5)
>>> selector = selector.fit(X, y)
>>> selector.support_
array([ True, True, True, True, True, False, False, False, False,
False])
>>> selector.ranking_
array([1, 1, 1, 1, 1, 6, 4, 3, 2, 5])
Run Code Online (Sandbox Code Playgroud)
有没有办法让scikit-learn也可以确定主要功能之间的相对重要性?
如果需要,我很高兴增加树木或类似树木的数量。与此相关,是否有办法查看此排名的信心?
对于我的所有项目,我在开始时加载所有 env 变量,并检查所有预期的键是否存在,如.env.example遵循dotenv-safe 方法的文件所述。
然而,env 变量是字符串,每当它们在 Python 代码中使用时都必须手动转换。这很烦人且容易出错。我想使用.env.example文件中的信息来转换 env 变量并在我的 IDE (VS Code) 中获得 Python 输入支持。我怎么做?
环境示例
PORT: int
SSL: boolean
Run Code Online (Sandbox Code Playgroud)
Python 理想行为
# Set the env in some way (doesn't matter)
import os
os.environment["SSL"] = "0"
os.environment["PORT"] = "99999"
env = type_env()
if not env["SSL"]: # <-- I'd like this to be cast to boolean and typed as a boolean
print("Connecting w/o SSL!")
if 65535 < env["PORT"]: # <-- I'd like this to …Run Code Online (Sandbox Code Playgroud) 我有多个HDF5数据集保存在同一个文件中,my_file.h5.这些数据集具有不同的维度,但第一维中的观察数量相同:
features.shape = (1000000, 24, 7, 1)
labels.shape = (1000000)
info.shape = (1000000, 4)
Run Code Online (Sandbox Code Playgroud)
重要的是,信息/标签数据正确连接到每组要素,因此我想要使用相同的种子来混洗这些数据集.此外,我想把它们洗掉,而不是将它们完全加载到内存中.这可能使用numpy和h5py吗?
python ×8
numpy ×2
typing ×2
caffe ×1
gensim ×1
gpu ×1
h5py ×1
hdf5 ×1
nlp ×1
performance ×1
scikit-learn ×1
tensorflow ×1
theano ×1
typechecking ×1
types ×1
word2vec ×1