小编weh*_*lae的帖子

元素存在,但`Set.contains(element)`返回false

元素如何包含在原始集合中,而是包含在未修改的副本中?

原始集合在其副本不包含元素时.见图.

以下方法返回true,但应始终返回false.两种情况下的实施c和实施.clustersHashSet

public static boolean confumbled(Set<String> c, Set<Set<String>> clusters) {
    return (!clusters.contains(c) && new HashSet<>(clusters).contains(c));
}
Run Code Online (Sandbox Code Playgroud)

调试表明,该元素包含在原始,但Set.contains(element)返回false的某些原因.见图.

有人可以向我解释发生了什么事吗?

java hash contains set hashset

12
推荐指数
3
解决办法
4265
查看次数

使用 NumPy 和 PyTorch 在 GPU 上求解线性方程

我正在尝试尽快求解大量线性方程。为了找出最快的方法,我在 CPU 和 GeForce 1080 GPU 上对NumPyPyTorch进行了基准测试(使用Numba进行 NumPy)。结果真的让我很困惑。

这是我在 Python 3.8 中使用的代码:

import timeit

import torch
import numpy
from numba import njit


def solve_numpy_cpu(dim: int = 5):
    a = numpy.random.rand(dim, dim)
    b = numpy.random.rand(dim)

    for _ in range(1000):
        numpy.linalg.solve(a, b)


def solve_numpy_njit_a(dim: int = 5):
    njit(solve_numpy_cpu, dim=dim)


@njit
def solve_numpy_njit_b(dim: int = 5):
    a = numpy.random.rand(dim, dim)
    b = numpy.random.rand(dim)

    for _ in range(1000):
        numpy.linalg.solve(a, b)


def solve_torch_cpu(dim: int = 5):
    a = torch.rand(dim, dim) …
Run Code Online (Sandbox Code Playgroud)

python gpu numpy numba pytorch

12
推荐指数
1
解决办法
3452
查看次数

跨平台命令行脚本(例如.bat和.sh)

我注意到Windows 7能够执行.sh文件,就好像它们是.bat文件一样.这让我想知道是否有可能写一个.sh文件,以便它可以在Windows Linux中执行(比方说bash).

我想到的第一件事是制作一个if语句,使得Windows和Ubuntu可以处理它并跳转到相应的块来执行特定于plattform的命令.怎么可以这样做?

注意:我知道这不是好习惯.我也知道像Python这样的脚本语言比混合语法命令行脚本更适合解决这个问题.我只是好奇...

bash shell command-line cross-platform

7
推荐指数
1
解决办法
2370
查看次数

Keras的`model.fit_generator()`与`model.fit()`的行为不同

我有一个巨大的数据集,我需要以生成器的形式提供给Keras,因为它不适合内存.但是,使用fit_generator,我不能复制我在常规训练中得到的结果model.fit.每个时代也持续相当长的时间.

我实现了一个最小的例子.也许有人可以告诉我问题所在.

import random
import numpy

from keras.layers import Dense
from keras.models import Sequential

random.seed(23465298)
numpy.random.seed(23465298)

no_features = 5
no_examples = 1000


def get_model():
    network = Sequential()
    network.add(Dense(8, input_dim=no_features, activation='relu'))
    network.add(Dense(1, activation='sigmoid'))
    network.compile(loss='binary_crossentropy', optimizer='adam')
    return network


def get_data():
    example_input = [[float(f_i == e_i % no_features) for f_i in range(no_features)] for e_i in range(no_examples)]
    example_target = [[float(t_i % 2)] for t_i in range(no_examples)]
    return example_input, example_target


def data_gen(all_inputs, all_targets, batch_size=10):
    input_batch = numpy.zeros((batch_size, no_features))
    target_batch = numpy.zeros((batch_size, …
Run Code Online (Sandbox Code Playgroud)

python generator keras

7
推荐指数
1
解决办法
8149
查看次数

Python 3.6 泛型类型提示

我正在尝试理解通用类型提示。阅读PEP 483 中的这一部分,我得到的印象是

SENSOR_TYPE = TypeVar("SENSOR_TYPE")
EXP_A = Tuple[SENSOR_TYPE, float]
class EXP_B(Tuple[SENSOR_TYPE, float]):
    ...
Run Code Online (Sandbox Code Playgroud)

EXP_A并且EXP_B应该识别相同的类型。然而,在 PyCharm #PC-181.4203.547 中,只能EXP_B按预期工作。经过调查,我注意到EXP_B有一个__dict__成员,而EXP_A没有。

这让我想知道,这两种类型定义实际上是同义的吗?

编辑:我最初的目标是设计一个通用的EXP2 元组类,其中第二个元素始终是 a float,第一个元素类型是可变的。我想按如下方式使用这个泛型类的实例

from typing import TypeVar, Tuple, Generic

T = TypeVar("T")


class EXP_A(Tuple[T, float]):
    ...


EXP_B = Tuple[T, float]


V = TypeVar("V")


class MyClass(Generic[V]):
    def get_value_a(self, t: EXP_A[V]) -> V:
        return t[0]

    def get_value_b(self, t: EXP_B[V]) -> V:
        return t[0]


class …
Run Code Online (Sandbox Code Playgroud)

python generics types type-hinting python-3.x

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