私は通常の方法でモデル関数で定義された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
の値を返す
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を返すために上記を修正するにはどうすればよいですか、もっと根本的な間違いがある場合は、入力変数が重要であるかどうかを判断する方法をお勧めします。