Проще всего мне было бы просто опубликовать пустой код, который я пытаюсь выполнить непосредственно в Theano, если это возможно:
tensor = shared(np.random.randn(7, 16, 16)).eval()
tensor2 = tensor[0,:,:].eval()
tensor2[tensor2 < 1] = 0.0
tensor2[tensor2 > 0] = 1.0
new_tensor = [tensor2]
for i in range(1, tensor.shape[0]):
new_tensor.append(np.multiply(tensor2, tensor[i,:,:].eval()))
output = np.array(new_tensor).reshape(7,16,16)
Если это не сразу очевидно, я пытаюсь использовать значения из одной матрицы тензора, состоящего из 7 разных матриц, и применить это к другим матрицам в тензоре.
На самом деле проблема, которую я решаю, заключается в выполнении условных операторов в целевой функции для полностью сверточной сети в Керасе. По сути, потери для некоторых значений карты объектов будут рассчитываться (и впоследствии взвешиваться) иначе, чем для других, в зависимости от некоторых значений в одной из карт объектов.