【问题标题】:Constrained Optimization Tensorflow约束优化 Tensorflow
【发布时间】:2020-01-17 00:10:37
【问题描述】:

我在 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 优化可以为一般功能做到这一点。有没有办法为神经网络做到这一点。请附上代码示例。

【问题讨论】:

    标签: tensorflow optimization keras neural-network


    【解决方案1】:

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

    您可以编写一个小函数来评估网络性能,使用predict_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 只是产生一个概率。它是一个分类器。
    • 好的,我知道发生了什么。它是一个二元分类器,所以 A 类为 1,B 类为 0。你想找到最强烈地分类为 A 类的数据点吗?
    • 是的,正是
    猜你喜欢
    • 2020-11-06
    • 1970-01-01
    • 2021-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-03
    • 2012-12-08
    • 1970-01-01
    相关资源
    最近更新 更多