首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >向Tensorflow添加自定义正则化

向Tensorflow添加自定义正则化
EN

Stack Overflow用户
提问于 2018-01-01 06:26:47
回答 1查看 819关注 0票数 0

我正在使用tensorflow优化一个简单的最小二乘目标函数,如下所示:

这里,Y是目标向量,X是输入矩阵,向量w表示要学习的权重。

示例场景:

我能想到的一种解决方案是使用tf.slice来索引$w$的第一个值,并将其添加到原始成本项之外,但我不相信它会对权重产生预期的效果。

我希望大家能就这样的事情在tensorflow中是否可能实现提供意见,如果是这样的话,实现它的最好方法可能是什么?

另一种选择是添加权重约束,并使用增广拉格朗日目标来实现,但在使用拉格朗日路线之前,我想首先探索正则化选项。

对于没有额外正则化的初始目标函数,我当前的代码如下:

代码语言:javascript
复制
train_x ,train_y are the training data, training targets respectively.
test_x  , test_y are the testing data, testing targets respectively.

#Sum of Squared Errs. Cost.
def costfunc(predicted,actual):
    return tf.reduce_sum(tf.square(predicted - actual))

#Mean Squared Error Calc.
def prediction(sess,X,y_,test_x,test_y):
    pred_y = sess.run(y_,feed_dict={X:test_x})
    mymse = tf.reduce_mean(tf.square(pred_y - test_y))
    mseval=sess.run(mymse)

    return mseval,pred_y


with tf.Session() as sess:

    X = tf.placeholder(tf.float32,[None,num_feat])  #Training Data 
    Y = tf.placeholder(tf.float32,[None,1]) #  Target Values 
    W = tf.Variable(tf.ones([num_feat,1]),name="weights")  

    init = tf.global_variables_initializer()

    sess.run(init)

    #Tensorflow ops and cost function definitions.
    y_ = tf.matmul(X,W) 
    cost_history = np.empty(shape=[1],dtype=float)
    out_of_sample_cost_history = np.empty(shape=[1],dtype=float)
    cost=costfunc(y_,Y) 
    learning_rate = 0.000001
    training_step = tf.train.GradientDescentOptimizer(learning_rate).minimize(cost)


    for epoch in range(training_epochs):
        sess.run(training_step,feed_dict={X:train_x,Y:train_y})
        cost_history = np.append(cost_history,sess.run(cost,feed_dict={X: train_x,Y: train_y}))
        out_of_sample_cost_history = np.append(out_of_sample_cost_history,sess.run(cost,feed_dict={X:test_x,Y:test_y}))


    MSETest,pred_test = prediction(sess,X,y_,test_x,test_y) #Predict on full testing set.
EN

回答 1

Stack Overflow用户

发布于 2018-01-01 12:37:30

tf.slice就可以了。在优化过程中,将添加w1的渐变(因为渐变在分叉时相加)。另外,请检查Tensorboard上的图表(有关如何使用它的link )。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48046038

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档