оптимизировать функцию с двумя ограниченными матрицами в качестве входных данных - PullRequest
0 голосов
/ 28 мая 2019

Я пытаюсь оптимизировать функцию потерь, которая принимает два входа "m, d" в качестве входных данных. Оба из них (32, 32, 1) матрицы. Я не могу понять, как связать / ограничить их значения от 0 до 1. «m, d» - это фильтры, которые я применяю к некоторому входному сигналу, подаваемому в обученную модель ML.

Я посмотрел эти документы

https://scipy -lectures.org / расширенный / mathematical_optimization / index.html # id54 (См. Box-Bounds; гиперссылка в Содержание главы) https://docs.scipy.org/doc/scipy/reference/tutorial/optimize.html

scipy минимизировать с ограничениями

def lossfunction(MD):
    m = MD[:, :, 0]
    d = MD[:, :, 1]
    x = data[np.argwhere(label != 6)]
    xt = np.multiply((1 - m), x) + np.multiply(m, d)  # Todo: Apply Filter
    num_examples = xt.shape[0]
    sess = tf.get_default_session()
    totalloss = 0
    for offset in range(0, num_examples, BATCH_SIZE):
        batchx, batchy = xt[offset:offset + BATCH_SIZE], (np.ones(BATCH_SIZE) * targetlabel)
        loss = sess.run(loss_operation, feed_dict={x: batchx, y: batchy, prob: 0.8})
        totalloss = totalloss + loss
    finalloss = totalloss + lam * np.linalg.norm(m, 1)
    return finalloss


optimize.minimize(lossfunction, np.zeros((32, 32, 2)), bounds=((0, 1), (0, 1)))

Я получаю это сообщение об ошибке: ValueError: длина x0! = Длина границ

Я понимаю, что границы и входные данные должны быть одинакового размера. Есть ли удобный способ ввода границ?

...