2017-09-06 9 views
1

design matrix 파이썬 다양한 도구, I 표준 NN 스타일 L2-정규화 파라미터 추정을 수행 할 수있는 only the weights are regularized (바이어스 요소에 대응하는 1의 초기 컬럼) 등TensorFlow의 'matrix_solve_ls'를 사용하여 정규화에서 바이어스를 제외하려면 어떻게해야합니까? 주어

scipy.optimize.minimize(lambda p: np.mean((np.dot(dmat, p) - y_data)**2) + lamb*np.dot(p[1:], p[1:]), np.zeros(n_params).T).x 
로서

또는

scipy.optimize.minimize(lambda p: np.mean((np.dot(dmat, p) - y_data)**2) + 2*lamb*tf.nn.l2_loss(p[1:]).eval(), np.zeros(n_params).T).x 

는하지만 TensorFlow의 tf.matrix_solve_ls

tf.matrix_solve_ls(dmat, np.array([y_data]).T, l2_regularizer=lamb*len(dmat)).eval() 
취급되는 정규화의 편견을 배제 할 수있는 방법을 볼 수 없습니다

scipy.optimize.minimize(lambda p: np.mean((np.dot(dmat, p) - y_data)**2) + lamb*np.dot(p, p), np.zeros(n_params).T).x 

에 관해서는 해당

내가 편견을 배제 할 (건축에 의해, 또는 첫 번째 매개 변수) 정규화에서이 tf.matrix_solve_ls를 사용하는 방법?

+0

'tf.matrix_solve_ls'를 사용하는 것에 대해 잘 모르겠지만, 이전에 "바이어스"라는 단어가 포함되지 않은 변수에 대한 정규화 용어 만 계산하여이 작업을 수행했습니다. 'reg_term = tf.norm (var.name에 'bias'가 아닌 경우 tf.trainable_variables()의 var에 대한 var) ')과 같은 것입니다. – Engineero

답변

1

불행히도 현재 버전의 matrix_solve_ls에서는 불가능합니다. 와 (당신은 쉽게 l2_regularizer는 벡터,이 코드의 버전을 만들 수 있습니다

https://github.com/tensorflow/tensorflow/blob/master/tensorflow/python/ops/linalg_ops.py#L293

: 반면에, matrix_solve_ls의 기본 (빠른) 경로는 최근 단순히 복합 파이썬 함수로 변경되었습니다 각 매개 변수에 대한 별도의 값). 일반적으로 matrix_solve_ls에서 이와 같은 일반화를 구현하는 것이 좋습니다. 아마도이 변경을 끌어 오기 요청으로 제출할 수 있습니까?

관련 문제