2 つの入力 "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
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
境界と入力は同じ次元でなければならないことを理解しています。境界を入力する便利な方法はありますか?