Это звучит просто, но я не знаю, как это сделать.Как разбить массив numpy партиями?
я есть Numpy 2d массив
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) У вас есть 2D-массив X. Вы хотите обрабатывать строки 0:64, затем 64: 2 * 64, затем 2 * 64: 3 * 64 и так далее. И вы знаете, что 1783 не кратно 64? В этом случае ошибка возникает в любом случае. Постарайтесь быть более ясными о том, что вы хотите, возможно, сводя себя к более простому примеру, например, 5x4. –