Tensorflow 约束优化张量流

Tensorflow 约束优化张量流,tensorflow,optimization,keras,neural-network,Tensorflow,Optimization,Keras,Neural Network,我在Keras中有一个经过训练的分类器神经网络。设神经网络为f(x)。我想找到向量x,当| | x | ^2=1时,f(x)最大化。我目前已经用Keras训练了我的神经网络 model = Sequential() model.add(Dense(500, activation='sigmoid')) model.add(Dense(500, activation='sigmoid')) model.add(Dropout(0.5)) model.add(Dense(1, activation=

我在Keras中有一个经过训练的分类器神经网络。设神经网络为f(x)。我想找到向量x,当| | x | ^2=1时,f(x)最大化。我目前已经用Keras训练了我的神经网络

model = Sequential()
model.add(Dense(500, activation='sigmoid'))
model.add(Dense(500, activation='sigmoid'))
model.add(Dropout(0.5))
model.add(Dense(1, activation='sigmoid'))

model.compile(loss='binary_crossentropy', optimizer='adam',  metrics=['accuracy', auc])
model.fit(x_train, y_train, validation_data=(x_test, y_test), epochs=2, verbose = 1, callbacks=[earlyStopping])

我想知道,一旦我的神经网络经过训练,是否有办法解决这个约束优化问题。有一个scipy optimize可以为一般功能实现这一点。对于神经网络,有没有一种方法可以做到这一点。请提供一个代码样本。

如果我理解正确,您已经完成了神经网络的训练,并希望找到输入
x
,该输入可以最大限度地提高其在某一类中的概率(其中输出接近1.0)

您可以编写一个小函数,使用
predict\u proba()
方法评估网络性能,以获得测试数据的分类概率,然后使用scipy优化此函数:

model = Sequential()
model.add(Dense(500, activation='sigmoid'))
model.add(Dense(500, activation='sigmoid'))
model.add(Dropout(0.5))
model.add(Dense(1, activation='sigmoid'))

model.compile(loss='binary_crossentropy', optimizer='adam',  metrics=['accuracy', auc])
model.fit(x_train, y_train, validation_data=(x_test, y_test), epochs=2, verbose = 1, callbacks=[earlyStopping])

def f(x):
    prediction = model.predict_proba(x)
    return -prediction

a = scipy.optimize.minimize(f, x0=np.random.randn(500))
optimal_x = a.x

optimal_x
将是输入
x
,它最大限度地提高了分类器将其放入一个特定类中的确定性

我不是在寻找最佳的数据集。我试图找到使预训练f(x)最大化的单个数据点x。f(x)只是评估神经网络。这只取决于x。但是呢?f(x)产生一组输出,每个类别一个。你想最大化什么?x是你的数据,F只产生一个概率。这是一个分类器。好的,我知道发生了什么。它是一个二元分类器,所以1代表类a,0代表类B。你想找到被强分类为类a的数据点吗?是的,这正是正确的