问题简述
最近要用GAN做图片处理,试跑别人的代码,因为个人电脑配置跑不动,于是搞了个服务器用GPU跑,结果没想到在本地电脑上跑没什么问题,在服务器上跑就报错,报错如下:
Traceback (most recent call last):
File "/lib/python3.5/site-packages/numpy/lib/arraypad.py", line 1036, in _normalize_shape
shape_arr = np.broadcast_to(shape_arr, (ndims, 2))
File "lib/python3.5/site-packages/numpy/lib/stride_tricks.py", line 174, in broadcast_to
return _broadcast_to(array, shape, subok=subok, readonly=True)
File "/lib/python3.5/site-packages/numpy/lib/stride_tricks.py", line 129, in _broadcast_to
op_flags=[op_flag], itershape=shape, order='C').itviews[0]
ValueError: operands could not be broadcast together with remapped shapes [original->remapped]: (4,2) and requested shape (1,2)During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "train.py", line 90, in <module>
validation = load_validation()
File "/utils.py", line 77, in load_validation
validation = np.pad(validation, pad_width=npad, mode='constant', constant_values=0)
File "/lib/python3.5/site-packages/numpy/lib/arraypad.py", line 1295, in pad
pad_width = _validate_lengths(narray, pad_width)
File "/lib/python3.5/site-packages/numpy/lib/arraypad.py", line 1080, in _validate_lengths
normshp = _normalize_shape(narray, number_elements)
File "lib/python3.5/site-packages/numpy/lib/arraypad.py", line 1039, in _normalize_shape
raise ValueError(fmt % (shape,))
ValueError: Unable to create correctly shaped tuple from ((0, 0), (56, 56), (0, 0), (0, 0))
网上找了很久也没找到原因,最后苦思冥想,发现错误原因竟然是:
往服务器上传.png图片的数据集dataset的时候用了ASCII码传输。
网上查了一下ftp文件传输的ASCII码传输和Binary传输的差别,最后总结如下:
文本文件用ASCII码传输,图片用Binary传输。
如果用ASCII码传输图片会失真。
解决方案
最后把服务器上的dataset删掉,重新用Binary格式传输了一遍,问题解决了。