【发布时间】:2015-04-14 22:26:13
【问题描述】:
听起来很简单,我不知道该怎么做。
我有 numpy 的二维数组
X = (1783,30)
我想将它们分成 64 个批次。我这样编写代码。
batches = abs(len(X) / BATCH_SIZE ) + 1 // It gives 28
我正在尝试批量预测结果。所以我用零填充批次,然后用预测结果覆盖它们。
predicted = []
for b in xrange(batches):
data4D = np.zeros([BATCH_SIZE,1,96,96]) #create 4D array, first value is batch_size, last number of inputs
data4DL = np.zeros([BATCH_SIZE,1,1,1]) # need to create 4D array as output, first value is batch_size, last number of outputs
data4D[0:BATCH_SIZE,:] = X[b*BATCH_SIZE:b*BATCH_SIZE+BATCH_SIZE,:] # fill value of input xtrain
#predict
#print [(k, v[0].data.shape) for k, v in net.params.items()]
net.set_input_arrays(data4D.astype(np.float32),data4DL.astype(np.float32))
pred = net.forward()
print 'batch ', b
predicted.append(pred['ip1'])
print 'Total in Batches ', data4D.shape, batches
print 'Final Output: ', predicted
但是在最后批号 28 中,只有 55 个元素而不是 64 个(总元素 1783 个),它给出了
ValueError: could not broadcast input array from shape (55,1,96,96) into shape (64,1,96,96)
有什么办法解决这个问题?
PS:网络预测需要精确的批大小为 64 才能预测。
【问题讨论】:
-
你的问题我不清楚(考虑到浏览量和没有答案,我不是唯一一个)。 1)。
net来自哪个模块? 2) 你有一个二维数组 X。你想处理行 0:64,然后是 64:2*64,然后是 2*64:3*64,依此类推。你知道 1783 不是 64 的倍数吗?无论如何,这就是错误的来源。尝试更明确地说明您想要什么,可能会将自己简化为一个更简单的示例,例如 5x4。