2017-02-19 1 views
0

중요하지 않은 회귀 문제에 tensorflow를 사용합니다. 포커 핸드, 포커 베팅 및 액션을 나타내는 내 네트워크 (192 바이너리 (0 또는 1) 요소가있는 배열) 및이 동작으로 이득을 나타내는 출력 (단일 요소가있는 배열)이 입력됩니다. 나는이 대상에 대해 가지고 교육 (100 반복)의 결과로Tensorflow 회귀 모델에서 음수 값을 얻지 못합니다.

self._target = tf.placeholder("float", [None]) 
self.cost = tf.reduce_mean(tf.square(self._target - tf.transpose(self.output_layer))) 
self._train_operation = tf.train.GradientDescentOptimizer(self.LEARNING_RATE).minimize(self.cost) 

: 네트워크는 100 개 뉴런

input_layer = tf.placeholder(tf.float32, (None, self.INPUT_LAYER_SIZE)) 
    layer_1_biases = tf.Variable(tf.truncated_normal(stddev=self.STD_DEV, shape=[self.LAYER_1_SIZE])) 
    layer_1_weights = tf.Variable(tf.truncated_normal(stddev=self.STD_DEV, shape=[self.INPUT_LAYER_SIZE, self.LAYER_1_SIZE])) 
    layer_2_biases = tf.Variable(tf.truncated_normal(stddev=self.STD_DEV, shape=[self.LAYER_2_SIZE])) 
    layer_2_weights = tf.Variable(tf.truncated_normal(stddev=self.STD_DEV, shape=[self.LAYER_1_SIZE, self.LAYER_2_SIZE])) 
    layer_3_biases = tf.Variable(tf.truncated_normal(stddev=self.STD_DEV, shape=[self.LAYER_3_SIZE])) 
    layer_3_weights = tf.Variable(
     tf.truncated_normal(stddev=self.STD_DEV, shape=[self.LAYER_2_SIZE, self.LAYER_3_SIZE])) 

    layer_1 = tf.add(tf.matmul(input_layer, layer_1_weights), layer_1_biases) 
    layer_1 = tf.nn.relu(layer_1) 
    layer_2 = tf.add(tf.matmul(layer_1, layer_2_weights), layer_2_biases) 
    layer_2 = tf.nn.relu(layer_2) 
    layer_3 = tf.add(tf.matmul(layer_2, layer_3_weights), layer_3_biases) 
    layer_3 = tf.nn.relu(layer_3) 

    output_layer_weights = tf.ones(shape=[self.LAYER_2_SIZE,1]) 
    output_layer = tf.matmul(layer3, output_layer_weights) 

    return input_layer, output_layer 

나는 속도 0.001 GradientDescentOptimizer 학습과 제곱 오차를 최소화하려고 3 개 숨겨진 레이어를 가지고 :

[-10.0, -10.0, -10.0, +10.0, -10.0] 

이 출력 :

[0.08981139, 0.05091755, 0.04566674, 0.06034175, 9.99115811, 0.13543463] 

교육 도중 로그 파일에 부정적인 출력이 표시되지 않았습니다. 그래서 내 네트워크는 부정적인 가치에서 배울 수 없습니다. 어떤 아이디어?

답변

0

간단한 대답 : 정품 인증 기능 ReLU는 max(0,x)입니다. 여기에서 x은 입력 합계가 가중치입니다. 따라서 기능은 항상 긍정적입니다. 다른 활성화 기능 (예 : tanh)을 사용해야합니다.

관련 문제