我想构造一个像随机数生成器一样工作的对象,但以指定的顺序生成数字。
# a random number generator
rng = lambda : np.random.randint(2,20)//2
# a non-random number generator
def nrng():
numbers = np.arange(1,10.5,0.5)
for i in range(len(numbers)):
yield numbers[i]
for j in range(10):
print('random number', rng())
print('non-random number', nrng())
Run Code Online (Sandbox Code Playgroud)
上面代码的问题是我无法nrng
在最后一行调用,因为它是一个生成器。我知道重写上面代码的最直接方法是简单地循环非随机数而不是定义生成器。我更喜欢让上面的示例工作,因为我正在处理大量代码,其中包含一个接受随机数生成器作为参数的函数,并且我想添加传递非随机数字序列而不重写的功能整个代码。
编辑:我在评论中看到一些混乱。我知道 python 的随机数生成器生成伪随机数。这篇文章是关于用一个数字生成器替换伪随机数生成器,该数字生成器从非随机的、用户指定的1,1,2,2,1,0,1
序列生成数字(例如,如果我想要的话,可以生成数字序列的生成器)。
我正在尝试将数据以 200 万个对称 100x100 矩阵的形式存储在我的硬盘上。这些矩阵的几乎所有元素都是非零的。我目前将这些数据保存在 200 个 npy 文件中;每个大小为 5.1GB 并包含 100000x100x100 numpy 数组。这会占用超过 1TB 的硬盘空间。
无论如何,我可以使用矩阵对称的事实来节省硬盘驱动器上的空间吗?
我尝试在 pytorch 中复制一个神经网络,然后训练复制的网络,但训练似乎并没有改变复制后网络中的权重。这篇文章建议deepcopy
是制作神经网络副本的便捷方法,因此我尝试在我的代码中使用它。
下面的代码运行良好,并显示训练后网络的权重和准确性与训练前不同。然而,当我切换 和 时network_cp=deepcopy(network)
,optimizer_cp=deepcopy(optimizer)
训练前后的准确性和权重完全相同。
# torch settings
torch.backends.cudnn.enabled = True
device = torch.device("cpu")
# training settings
learning_rate = 0.01
momentum = 0.5
batch_size_train = 64
batch_size_test = 1000
# get MNIST data set
train_loader, test_loader = load_mnist(batch_size_train=batch_size_train,
batch_size_test=batch_size_test)
# make a network
network = Net()
optimizer = optim.SGD(network.parameters(), lr=learning_rate,
momentum=momentum)
network.to(device)
# train network
train(network, optimizer, train_loader, device)
# copy network
network_cp = network
#network_cp = deepcopy(network)
optimizer_cp = optimizer …
Run Code Online (Sandbox Code Playgroud) python ×3
arrays ×1
generator ×1
matrix ×1
numpy ×1
python-3.x ×1
pytorch ×1
storage ×1
tensorflow ×1