2017-09-29 9 views
0

私は通常の方法でモデル関数で定義されたTensorflow Estimatorを持っています。 私はどの入力(zscore正規化された)入力が結果に対して有意であり、どの入力を排除できるかを調べたいと思います。私はモデルを変更して2つの変更を導入しました。推定値からtf.Variableを返す

(1)新しいレイヤーweight_layerはランダムに初期化され、要素ごとにinput_layerが乗算されます。

weight_layer = tf.Variable(tf.random_normal([1, inputs_n], 0.5, 1)) 
weighted_input = tf.multiply(weight_layer, input_layer) 
first_hidden_layer = tf.layers.dense(weighted_input, 
             int(inputs_n), 
             activation=tf.nn.relu, 
             name='dense1') 

(2)私はしようとする障害が、予測時に来るweight_layer

sparsity = tf.reduce_sum(weight_layer)  
loss = tf.losses.mean_squared_error(labels, predictions) + (1000*sparsity) 

に重みの合計によって損失を不利に損失関数に追加されたペナルティsparsityを私は次のエラーを取得する

if mode == tf.estimator.ModeKeys.PREDICT: 
    return tf.estimator.EstimatorSpec(mode=mode, 
             predictions={ 
             "predictions": predictions, 
             "sparsity" : weight_layer}) 

を::次のように、weight_layerの値を返す

を10
TypeError: predictions[sparsity] must be Tensor, 
given: <tf.Variable 'Model/Variable:0' shape=(1, 275) dtype=float32_ref> 

予測[スパース性]はテンソルではありませんが、それはtf.Variableであり、tf.Variableドキュメントはtf.Variableを「通常のtf.Tensorのように」扱うことができるため、 。

weight_layerを返すために上記を修正するにはどうすればよいですか、もっと根本的な間違いがある場合は、入力変数が重要であるかどうかを判断する方法をお勧めします。

答えて

0

私は非常によくEstimatorSpecのダイナミクスを知らない、が、あなたがモデルにweight_layersparsityに変数を供給しようとしているが、彼らはtf.reduce_sumのために異なる形状を持っているとして、それゆえ、それはエラーを上げていますようです。

関連する問題