一种方法是每次从tensorflow_hub
如下所示下载模型
import tensorflow as tf
import tensorflow_hub as hub
hub_url = "https://tfhub.dev/google/tf2-preview/nnlm-en-dim128/1"
embed = hub.KerasLayer(hub_url)
embeddings = embed(["A long sentence.", "single-word", "http://example.com"])
print(embeddings.shape, embeddings.dtype)
Run Code Online (Sandbox Code Playgroud)
我想下载一次文件并一次又一次地使用而不是每次都下载
许多著名的 Python 库基本上都是用 C 编写的(如 tensorflow 或 numpy),因为这显然大大加快了速度。通过阅读本文,我能够非常轻松地将 C 函数集成到 python 中。这样做我终于可以distutils
用来访问source.c
文件的功能:
# setup.py
from distutils.core import setup, Extension
def main():
setup(
# All the other parameters...
ext_modules=[ Extension("source", ["source.c"]) ]
)
if __name__ == "__main__":
main()
Run Code Online (Sandbox Code Playgroud)
这样当我运行时python setup.py install
我可以安装我的库。但是,如果我想为里面的函数创建一个 python 编码的包装对象source.c
怎么办?有没有办法在不污染已安装模块的情况下做到这一点?
在互联网上闲逛时,我看到了一些使用共享库 ( .so
) 的看似简单的解决方案。但是,我需要一个不涉及附加编译的 C 代码的解决方案,而是一个在程序第一次运行时编译它的解决方案。
在 Python 中,当您创建一个模块时,您会创建一个__init__.py
文件(至少通常如此)。是否有 C/C++ 等价物?我的意思是有没有办法让#include
目录实际上包含一个文件?
在开发 python 包 \xe2\x80\x93 时,我认为 \xe2\x80\x93 是使用类型提示的很好的做法。为了让事情变得更清晰,我决定使用 Python 的.pyi
存根文件。由于我的包包含一些子包,我应该将存根声明放入每个子模块中(对我来说这似乎是最好的选择),还是应该将它们放在__init__.pyi
整个包的主模块中,就像 NumPy 那样?
为什么 Python 实现dataclasses.dataclass
为类装饰器而不是基类?我认为从概念的角度来看,将其作为基类至少会更清楚:该__init__
方法似乎是数据类装饰器添加到类中的唯一内容,并且添加方法和属性是任何直接基类中的内容通常打算做。为什么要实现一个本质上修改类的装饰器?基类就是为此目的而设计的。此外,拥有“ Dataclass
”基类将使用户更容易在需要任何特定工作机制时修改其行为,只需在继承数据类时覆盖基类的方法即可。
因为它显然是出于某种原因而这样做的,所以我试图找出原因。我想到的唯一的事情可能是一些与性能相关的事情,我认为继承一个类应该比通过函数传递一个类慢,但是我不确定数据类是否意味着高性能 - 也不是Python语言本身 - 无论如何我们都将其命名为元组。
我正在尝试按照此链接中的步骤安装 Tensorflow 对象检测 API ,这是 Tensorflow 2 的官方安装文档。
git clone https://github.com/tensorflow/models.git
> everything is ok
cd models/research/
> everything is ok
protoc object_detection/protos/*.proto --python_out=.
> everything is ok
cp object_detection/packages/tf2/setup.py .
> everything is ok
python -m pip install --use-feature=2020-resolver .
> Usage:
> /opt/anaconda3/envs/ml/bin/python -m pip install [options] <requirement specifier> [package-> index-options] ...
> /opt/anaconda3/envs/ml/bin/python -m pip install [options] -r <requirements file> [package-index-options] ...
> /opt/anaconda3/envs/ml/bin/python -m pip install [options] [-e] <vcs project url> ...
> /opt/anaconda3/envs/ml/bin/python …
Run Code Online (Sandbox Code Playgroud) 我试图将一个函数应用于包含任意子列表子级别的列表的每个元素。像这样。
a = [1,2,3]
b = [[1,2,3],[4,5,6]]
c = [[[1,2,3],[4,5,6]],[[7,8,9],[10,11,12]]]
function = lambda x: x+1
def apply(iterable,f):
# do stuff here
Run Code Online (Sandbox Code Playgroud)
print(apply(a,function)) # [2,3,4]
print(apply(b,function)) # [[2,3,4],[5,6,7]]
print(apply(c,function)) # [[[2,3,4],[5,6,7]],[[8,9,10],[11,12,13]]]
Run Code Online (Sandbox Code Playgroud)
基本上我找不到编写apply
函数的方法。我尝试过 numpy,但这当然不是解决方案,因为列表的内容也可以是字符串、对象......
有没有办法获得python的Ellipsis
类型?我看到了这样做type(Ellipsis)
并type(...)
返回<class 'ellipsis'>
,但是通过编写x = ellipsis()
它似乎 ifellipsis
不是默认定义的数据类型 ( NameError: name 'ellipsis' is not defined
)。
我认为builtins
内置模块可以为我的问题提供解决方案,但以下内容也会引发错误。
import builtins
_ellipsis = builtins.ellipsis # AttributeError: module 'builtins' has no attribute 'ellipsis'
Run Code Online (Sandbox Code Playgroud)
我真正需要的是做这样的事情:
from typing import Union
def f(x: Union[str, type(...)]):
pass
Run Code Online (Sandbox Code Playgroud)
显然以前的作品,但我想有一个更漂亮的解决方案,只是 type(...)