小编Jaf*_*ado的帖子

与相同的 Keras 模型(使用 Adam 优化器)相比,PyTorch 的误差高出 400%


总而言之

经过训练来预测函数的简单(单隐藏层)前馈 Pytorch 模型的性能y = sin(X1) + sin(X2) + ... sin(X10)明显低于使用 Keras 构建/训练的相同模型。为什么会这样?可以采取哪些措施来减轻性能差异?


在训练回归模型时,我注意到 PyTorch 的性能远远低于使用 Keras 构建的相同模型。

之前已经观察到并报道过这种现象

此前也已做出以下解释和建议

  1. 使用相同的十进制精度(32 与 64):1 , 2 ,

  2. 使用 CPU 而不是 GPU:1 , 2

  3. retain_graph=True计算 …

adam keras tensorflow pytorch

44
推荐指数
1
解决办法
3848
查看次数

如何让 PyPI 自动安装依赖项

如何在 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 我对此完全陌生,因此我将欣赏显式代码或指向简单教程页面的链接。谢谢你。

python pip pypi scikit-learn

9
推荐指数
2
解决办法
2968
查看次数

如何检查python对象是否是numpy ndarray

我有一个函数,它将数组作为输入并对其进行一些计算。输入数组可能是也可能不是 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)

python arrays performance types numpy

5
推荐指数
3
解决办法
2908
查看次数

为什么 Pytest 对夹具参数执行嵌套循环

使用 Pytest,我想编写一个测试函数,该函数接受多个装置作为参数。每个灯具都有几个参数。

例如,在 test_demo.py 中,有一个函数test_squared_is_less_than_10,它接受夹具negative_integerpositive_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), …

python fixtures pytest

5
推荐指数
1
解决办法
2456
查看次数

Keras MultiGPU 训练失败并显示错误消息“IndexError:从空列表中弹出”

我想利用多个 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)

python gpu multi-gpu keras tensorflow

3
推荐指数
1
解决办法
1071
查看次数

为什么 pandas_datareader 停止从 IEX 和 Robinhood API 检索数据

一段时间以来,我一直在使用 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)

python pandas-datareader

0
推荐指数
1
解决办法
4024
查看次数