总而言之:
经过训练来预测函数的简单(单隐藏层)前馈 Pytorch 模型的性能y = sin(X1) + sin(X2) + ... sin(X10)明显低于使用 Keras 构建/训练的相同模型。为什么会这样?可以采取哪些措施来减轻性能差异?
在训练回归模型时,我注意到 PyTorch 的性能远远低于使用 Keras 构建的相同模型。
之前已经观察到并报道过这种现象:
此前也已做出以下解释和建议:
如何在 PyPI 上发布包,以便自动安装所有依赖项,而不是由用户手动安装。
我在setup.pywith 中指定依赖项,install_requires如下所示:
setuptools.setup(name='myPackage',
version='1.0',
packages=setuptools.find_packages(),
include_package_data=True,
classifiers=[
'Programming Language :: Python :: 3',
'Operating System :: OS Independent',
'Topic :: Scientific/Engineering :: Bio-Informatics'
],
install_requires=['numpy', 'pandas', 'sklearn'],
python_requires='>=3'
)
Run Code Online (Sandbox Code Playgroud)
我有一个requirements.txt包含在我的文件中的文件MANIFEST.in:
numpy==1.15.4
sklearn==0.20.1
pandas==0.23.4
Run Code Online (Sandbox Code Playgroud)
但是,在我尝试安装包时在 test.pypi 上发布后,出现以下错误:
Could not find a version that satisfies the requirement numpy (from myPackage==1.0.0) (from versions: )
No matching distribution found for sklearn (from myPackage==1.0.0)
Run Code Online (Sandbox Code Playgroud)
这意味着 PyPI 不会安装 numpy 依赖项。如何启用我的依赖项的自动安装?在构建和发布包时我应该使用虚拟环境吗?我该怎么做呢?
PS 我对此完全陌生,因此我将欣赏显式代码或指向简单教程页面的链接。谢谢你。
我有一个函数,它将数组作为输入并对其进行一些计算。输入数组可能是也可能不是 numpy ndarray(可能是列表、pandas 对象等)。
在函数中,我将输入数组(无论其类型如何)转换为 numpy ndarray。但是对于大型数组,这一步的计算成本可能会很高,尤其是在 for 循环中多次调用该函数时。
因此,只有当输入数组还不是 numpy ndarray 时,我才想将其转换为 numpy ndarray。
我怎样才能做到这一点?
import numpy as np
def myfunc(array):
# Check if array is not already numpy ndarray
# Not correct way, this is where I need help
if type(array) != 'numpy.ndarray':
array = np.array(array)
# The computation on array
# Do something with array
new_array = other_func(array)
return new_array
Run Code Online (Sandbox Code Playgroud) 使用 Pytest,我想编写一个测试函数,该函数接受多个装置作为参数。每个灯具都有几个参数。
例如,在 test_demo.py 中,有一个函数test_squared_is_less_than_10,它接受夹具negative_integer和positive_integer作为参数,然后检查夹具参数的平方是否小于 10。
import pytest
@pytest.fixture(params=[-1, -2, -3])
def negative_integer(request):
return request.param
@pytest.fixture(params=[1, 2, 3])
def positive_integer(request):
return request.param
def test_squared_is_less_than_10(negative_integer, positive_integer):
assert negative_integer ** 2 < 10
assert positive_integer ** 2 < 10
Run Code Online (Sandbox Code Playgroud)
我预计当我在终端中运行 pytest 命令时,总共应该执行 6 个测试,即[-1, -2, -3]forpositive_integer和[1, 2, 3]for negative_integer。
然而,pytest 似乎执行嵌套循环类型的迭代,以便执行 9 个测试,即[(-1, 1), (-1, 2), (-1, 3), (-2, 1), (-2, 2), (-2, 3), (-3, 1), (-3, 2), …
我想利用多个 GPU 来使用该tf.distribute.MirroredStrategy()方法训练我的 Keras/Tensorflow 模型。
下面是我的代码片段:
# Imports
import tensorflow as tf
import model # Module of functions for building the model
# Check GPU availability
devices = tf.config.list_physical_devices('GPU')
print('Num GPUs:', len(devices))
print(devices)
# Prepare dataset (Xtrain/Xtest are Numpy arrays with shape, (None, 600, 23))
Xtrain, Xtest = models.get_dataset()
# Datasets as tf.data.dataset objects
batch_size = 256
train_dataset = tf.data.Dataset.from_tensor_slices((Xtrain, Xtrain)).batch(batch_size)
test_dataset = tf.data.Dataset.from_tensor_slices((Xtest, Xtest)).batch(batch_size)
# Build model for synchronous multi-GPU training
strategy = tf.distribute.MirroredStrategy()
print('Number of devices …Run Code Online (Sandbox Code Playgroud) 一段时间以来,我一直在使用 pandas_datareader 从 IEX 和 Robinhood API 检索股票价格,没有出现任何问题。然而,最近(本周初),我的代码开始失败。
这是代码和错误:
应用程序编程接口
import pandas_datareader.data as web
import datetime as dt
end = dt.datetime.today()
start = end - relativedelta(months=20)
data = web.DataReader('MSFT', 'iex', start, end)
Run Code Online (Sandbox Code Playgroud)
和错误:
web.DataReader('MSFT', 'iex', start, end)
Traceback (most recent call last):
File "<ipython-input-88-2781d4515d5c>", line 1, in <module>
web.DataReader('MSFT', 'iex', start, end)
File "/anaconda3/lib/python3.7/site-packages/pandas_datareader/data.py", line 322, in DataReader
session=session).read()
File "/anaconda3/lib/python3.7/site-packages/pandas_datareader/iex/daily.py", line 91, in read
self._get_params(self.symbols))
File "/anaconda3/lib/python3.7/site-packages/pandas_datareader/base.py", line 84, in _read_one_data
out = self._read_url_as_StringIO(url, params=params)
File "/anaconda3/lib/python3.7/site-packages/pandas_datareader/base.py", line 95, …Run Code Online (Sandbox Code Playgroud)