numpy.core._exceptions.MemoryError: 无法为形状为(1073741824,0)和数据类型float32的数组分配0字节的内存。

3

我正在尝试训练StyleGAN2,但每次开始训练时都会出现这个错误。奇怪的是它无法分配0字节。

日志:

Traceback (most recent call last):
  File "train.py", line 561, in <module>
    main()
  File "train.py", line 553, in main
    run_training(**vars(args))
  File "train.py", line 416, in run_training
    run_desc, training_options = setup_training_options(**hyperparam_options)
  File "train.py", line 105, in setup_training_options
    dataset_obj = dataset.load_dataset(**args.train_dataset_args) # try to load the data and see what comes out
  File "C:\Temporary Software\stylegan2-ada\training\dataset.py", line 231, in load_dataset
    mirror_augment=mirror_augment, repeat=repeat, shuffle=shuffle)
  File "C:\Temporary Software\stylegan2-ada\training\dataset.py", line 114, in __init__
    self._tf_labels_var = tflib.create_var_with_large_initial_value(self._np_labels, name='labels_var')
  File "C:\Temporary Software\stylegan2-ada\dnnlib\tflib\tfutil.py", line 234, in create_var_with_large_initial_value
    zeros = tf.zeros(initial_value.shape, initial_value.dtype)
  File "C:\Users\Andrew\anaconda3\envs\stylegan\lib\site-packages\tensorflow\python\ops\array_ops.py", line 1871, in zeros
    output = _constant_if_small(zero, shape, dtype, name)
  File "C:\Users\Andrew\anaconda3\envs\stylegan\lib\site-packages\tensorflow\python\ops\array_ops.py", line 1829, in _constant_if_small
    return constant(value, shape=shape, dtype=dtype, name=name)
  File "C:\Users\Andrew\anaconda3\envs\stylegan\lib\site-packages\tensorflow\python\framework\constant_op.py", line 246, in constant
    allow_broadcast=True)
  File "C:\Users\Andrew\anaconda3\envs\stylegan\lib\site-packages\tensorflow\python\framework\constant_op.py", line 284, in _constant_impl
    allow_broadcast=allow_broadcast))
  File "C:\Users\Andrew\anaconda3\envs\stylegan\lib\site-packages\tensorflow\python\framework\tensor_util.py", line 464, in make_tensor_proto
    nparray = np.empty(shape, dtype=np_dt)
numpy.core._exceptions.MemoryError: Unable to allocate 0 bytes for an array with shape (1073741824, 0) and data type float32

这是一个numpy的bug还是我的操作有误?如果您能帮助我,我将不胜感激。


这是一个内存错误,你的电脑没有足够的内存来执行该操作。 - Mayeul sgc
@Mayeulsgc:这真的是0字节。 - user2357112
内存以一页(4kb)的增量分配。因此,如果你的RAM用尽了,调用 malloc申请0字节的内存可能会返回错误。然而,通常情况下,操作系统会将最不常使用的页面转移到虚拟RAM(交换文件)中处理,所以这仍然很奇怪。 - Marat
我从未见过 (N,0) 形状(对于大的 N)的内存错误。但是创建具有 0 维度的数组通常是一个错误。即使作为迭代“concatenate”的起点,这也是一个不好的想法。 - hpaulj
这里也是,使用两个GTX 1080ti GPU和32GB RAM系统内存。 - noam gaash
1个回答

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接