GPU上で実行されるSRGAN kerasモデルをTPU上で実行するように変換しています。
SRGANはPReLUアクティベーションを使用しており、私の機能的APIでtf.keras.layers.PReLUを使用している場合
x = layers.PReLU(alpha_initializer = 'zeros', alpha_regularizer = None, alpha_constraint = None, shared_axes=[1,2])(x)
TPUを使用してモデルをフィットすると、次のTypeErrorが発生します。
TypeError: bad operand type for unary -: 'ReplicatedVariable'
PReLUレイヤーを次のように交換したとします。
x = tf.Activations('relu')(x)
エラーは消えます。
誰もがこの問題を見ましたか? PReLUクラスの呼び出し機能に関連していると思います。
@tf_export('keras.layers.PReLU')
Class PReLU(layer):
...
def call(self, inputs, mask=None):
...
else:
neg = -self.alpha * K.relu(-inputs)