我已经阅读了有关ValueError的各种文章,但没有获得令人满意的解决方案。拜托,谁能帮我我在做什么错??
代码:
assert(type(images) == list)
# assert(type(images[0]) == np.ndarray)
# assert(len(images[0].shape) == 3)
# assert(np.max(images[0]) > 10)
# assert(np.min(images[0]) >= 0.0)
inps = []
for img in images:
img = img.astype(np.float32)
inps.append(np.expand_dims(img, 0))
bs = 100
with tf.Session() as sess:
preds = []
n_batches = int(math.ceil(float(len(inps)) / float(bs)))
for i in range(n_batches):
sys.stdout.write(".")
sys.stdout.flush()
inp = inps[(i * bs):min((i + 1) * bs, len(inps))]
inp = np.concatenate(inp, 0)
pred = sess.run(softmax, {'ExpandDims:0': inp})
preds.append(pred)
preds = np.concatenate(preds, 0)
scores = []
for i in range(splits):
part = preds[(i * preds.shape[0] // splits):((i + 1) * preds.shape[0] // splits), :]
kl = part * (np.log(part) - np.log(np.expand_dims(np.mean(part, 0), 0)))
kl = np.mean(np.sum(kl, 1))
scores.append(np.exp(kl))
return np.mean(scores), np.std(scores)
错误:
>File "/content/Inception-Score/inception_score.py", line 45, in >get_inception_score
> preds = np.concatenate(preds, 0)
>ValueError: need at least one array to concatenate
答案 0 :(得分:0)
似乎您缺少要连接的数组的参数。您指定了初始数组和要连接的轴,但未指定第二个数组,因此“至少需要一个数组进行连接”。
np.concatenate()在第一个参数中至少有两个数组,如文档here中所述。看起来“ preds”只是一个数组。我不确定您要做什么,但也许串联不是您想要的吗?
答案 1 :(得分:0)
问题似乎出在np.concatenate
中,它需要一个数组数组,而您没有提供该数组
#syntax
numpy.concatenate((a1, a2, ...), axis=0, out=None)
参数:
a1,a2,…:array_like序列数组必须具有相同的形状,除了与轴对应的尺寸(默认为第一个)。axis:int,可选数组将沿其连接的轴。如果axis为None,则在使用前将数组展平。默认值为0。
out:ndarray,可选(如果提供),放置结果的目的地。形状必须正确,并且与未指定out参数的串联连接的形状匹配。
返回:ndarray串联数组。
检查preds
返回的内容