Bootstrap

PG-GAN 分类: ValueError: could not broadcast input array from shape (16,4,4,3) into shape (16)

Traceback (most recent call last):
  File "main.py", line 69, in <module>
    pggan.train()
  File "D:\我的文档\**.py", line 199, in train
    sess.run(opti_D, feed_dict={self.images: realbatch_array, self.z: sample_z})
  File "D:\ProgramData\Anaconda3\envs\tensorflow\lib\site-packages\tensorflow\python\client\session.py", line 929, in run
    run_metadata_ptr)
  File "D:\ProgramData\Anaconda3\envs\tensorflow\lib\site-packages\tensorflow\python\client\session.py", line 1121, in _run
    np_val = np.asarray(subfeed_val, dtype=subfeed_dtype)
  File "D:\ProgramData\Anaconda3\envs\tensorflow\lib\site-packages\numpy\core\numeric.py", line 538, in asarray
    return array(a, dtype, copy=False, order=order)
ValueError: could not broadcast input array from shape (16,4,4,3) into shape (16)

很明显根据错误类型,报这种类型的错误,因为你输入数据的尺寸和网络需要的尺寸不一致,才会报错。
然后查看了self.images占位符以及自己图片的大小,很明显是一样的,都是(16,4,4,3),百思不得其解,最终又查看了一下自己写的nextBatch()函数,原始生成模型中只需要图片即可,因此nextBatch()只返回图片即可,但是分类问题中我的返回值多了标签。这时仍然使用如下输入到网络中简单测试生成网络就会出错,因为现在该句返回的是一个元组。

realbatch_array,_ = self.data_In.getNextBatch(batch_num,self.batch_size,resize_w = self.output_size)

说的这,不得不吐槽一下自己基础不扎实了。。。。
这是python返回函数使用的一个问题,如下函数,若a,b = test(),则a=1,b=2。若a = test(),则a = (1,2)是一个元组,若a , _ = test()则可以返回a = 1。所以归根结底,ValueError: could not broadcast input array from shape (16,4,4,3) into shape (16)是因为输入数据与模型要求的输入不一样,我这里犯了这个错误,是因为python基础不扎实。

def test():
    return 1,2
;