前提・実現したいこと
出力に関わらない値があるモデルで、「WARNING:tensorflow:Gradients do not exist for variables」
の警告を解決する方法について質問いたします。
環境はpython3でTensorFlow2.0を使っています。
inputを処理し、splitしてxとyに分けるレイヤーがあります。処理部分は次のような感じです。
python
1class Layer(tf.keras.Model): 2 def call(self,input): 3 a=conv(input) 4 ...その他の処理... 5 x,y=split(a) 6 return x,y
このレイヤを複数作成し、出力されたxは次のレイヤの入力に、yはすべて足し合わせて最終出力にという処理をします。
python
1class Model(tf.keras.Model): 2 def call(self,input): 3 x0,y0=layer0(input) 4 x1,y1=layer1(x0) 5 x2,y2=layer2(x1) 6 y=y0+y1+y2 7 ...yに対しての処理... 8 return softmax(y)
このとき出力yについてターゲットデータとのgradsとlossを計算し、optimizer.apply_gradientsすると以下の警告が発生します。
WARNING:tensorflow:Gradients do not exist for variables[layer2のkernelやbiasの一覧]when minimizing the loss
gradsの中身を確認してみると、たしかに一部がNoneとなっています。
Noneとなるのはx2が出力に関わらないため、この部分の勾配計算ができないよということなのではないかなと考えていますが、
この警告を解決するためにはどのような処理をすればよいのでしょうか。
x2について勾配計算をしないことを明示するなどの処理方法があるのでしょうか?

バッドをするには、ログインかつ
こちらの条件を満たす必要があります。