1

Я конвертирую модель SRGAN keras, которая будет работать на GPU для работы на TPU.

SRGAN использует активацию PReLU, а когда я использую tf.keras.layers.PRELU в моем функциональном API

x = layers.PReLU(alpha_initializer = 'zeros', alpha_regularizer = None, alpha_constraint = None, shared_axes=[1,2])(x)

Я получаю следующую ошибку TypeError, когда я подгоняю модель, используя TPU

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)

0