0
私は重大な回帰問題にテンソルを使用します。 ポーカーハンド、ポーカーベット、アクションを表すネットワーク(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]
トレーニング中にログファイルに負の出力が見られませんでした。だから私のネットワークは負の値から学ばない。何か案は?