0

我正在尝试优化将两个输入“m,d”作为输入的损失函数。这两个都是 (32, 32, 1) 矩阵。我无法弄清楚如何将它们的值限制在 0 和 1 之间。“m,d”是我应用于某些输入的过滤器,这些输入被输入到经过训练的 ML 模型中。

我看过这些文件

https://scipy-lectures.org/advanced/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: length of x0 != length of bounds

我知道边界和输入应该具有相同的尺寸。有没有方便的输入边界的方法?

4

0 回答 0