2017-12-31 220 views
0

Tensorflow 추가 배울 무게.맞춤 정규화 (regularization)는 I는 목적 함수는 다음과 같은 단순한 최소 제곱 최적화 tensorflow 사용하고

예 시나리오 :

enter image description here, enter image description here, 나는 tensorflow 변수 ww1 (첫 번째 스칼라 값에 추가적인 제약 조건을 부과하는 초기 목적 함수를 증대하고자한다면 enter image description here

X1가 나타내는 기능 매트릭스 X의 첫 번째 열), 어떻게 tensorflow에서 이것을 얻을 수 있습니까? 내가 생각할 수있는

enter image description here

한 가지 해결책은 $ 승 인덱스에 $의 첫 번째 값을 tf.slice을 사용하여 원가 기간 외에 추가로이를 추가하는 것입니다하지만 난 그것을이있을 것이라는 점을 확신하지 않다 무게에 원하는 효과.

이 같은 것이 텐서 흐름에서 가능한지 여부에 대한 의견을 듣고 싶습니다. 그렇다면 이것을 구현하는 가장 좋은 방법은 무엇일까요?

다른 옵션은 무게 제한을 추가하는 것입니다. 그리고이를 확장 된 라그랑지안 목적을 사용하여 수행 할 수 있습니다.하지만 먼저 Lagrangian 경로를 가기 전에 정규화 옵션을 탐색하고 싶습니다.

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. 

답변

0

tf.slice 할 것 :

내가 추가 정규화없이 초기 목적 함수에 대해 가지고있는 현재의 코드는 다음과 같다. 그리고 최적화 중에는 그라디언트가 w1으로 추가됩니다 (그라디언트가 포크에서 합쳐지기 때문에). 또한 Tensorboard의 그래프 (사용 방법은 link)를 확인하십시오.