1
TensorFlowのBasicRNNCell
にあるデフォルトのtanh
以外の転送機能を試してみたいと思います。TensorFlow:BasicRNNCellのtanhを別の値に変更しますか?
元の実装は次のようである:
class BasicRNNCell(RNNCell):
(...)
def __call__(self, inputs, state, scope=None):
"""Most basic RNN: output = new_state = tanh(W * input + U * state + B)."""
with vs.variable_scope(scope or type(self).__name__): # "BasicRNNCell"
output = tanh(linear([inputs, state], self._num_units, True))
return output, output
...と私はそれを変更:、tf.variable_scope
にvs.variable_scope
を変更
class MyRNNCell(BasicRNNCell):
(...)
def __call__(self, inputs, state, scope=None):
"""Most basic RNN: output = new_state = tanh(W * input + U * state + B)."""
with tf.variable_scope(scope or type(self).__name__): # "BasicRNNCell"
output = my_transfer_function(linear([inputs, state], self._num_units, True))
return output, output
成功したがlinear
>はrnn_cell.pyで実装したものです<であり、tf
では利用できません。
これを動作させるにはどうすればよいですか?
linear
を完全に再実装する必要がありますか? (私はすでにコードをチェックしていますが、そこにも依存関係の問題があると思います...)
私はテンソルフローに慣れていませんが、tensorflow.python.ops.rnn_cellは組み込み/ベースクラスではありません。クラスを拡張したり、新しいメソッドを既存のクラスに "パンチ"して、クラス内のすべての依存関係を利用できるようにする必要があります。ですから、なぜvv.variable_scopeに対してvvariable_scopeを変更したいのか分かりません。 tf.variable_scopeから必要なものを説明できますか?例: "my_transfer_function"はどのように実装されていますか? – user2133679
'vs'は見えないので、スクリプトを実行しているときに'グローバル名と定義されていません 'と表示されます。そのため、 'vs'を' tf'に変更したのは、 'variable_scope'メソッドが' tf'にあるからです。しかし、 'linear'はそのファイル内のローカル関数であるため、スクリプトを実行すると' linear'が欠けていると文句を言います。したがって、私の質問は、この依存関係をどのように満たすでしょうか? – daniel451