Я получил ответ отладкой.Урок заключается в том, что
Во-первых, tf.dtypes.cast (...) работает.
Во-вторых, я могу указать второй аргумент в своей пользовательской функции активации, чтобы указать тип данныхбросать(...).Ниже приведен связанный код
В-третьих, нам не нужен tf.constant для указания типа данных этих констант
В-четвертых, я заключаю, что добавление пользовательской функции в custom_activation.py являетсяСамый простой способ определить наш собственный слой / активацию, если он везде дифференцируем, или, по крайней мере, кусочно дифференцирован и не имеет разрыва на стыках.
# Quadruple Piece-Wise Constant Function
class MyFunc(Layer):
def __init__(self, sharp=100, DataType = 'float32', **kwargs):
super(MyFunc, self).__init__(**kwargs)
self.supports_masking = True
self.sharp = K.cast_to_floatx(sharp)
self.DataType = DataType
def call(self, inputs):
inputss = tf.dtypes.cast(inputs, dtype=self.DataType)
orig = inputss
# some calculations
return # my_results
def get_config(self):
config = {'sharp': float(self.sharp),
'DataType': self.DataType}
base_config = super(MyFunc, self).get_config()
return dict(list(base_config.items()) + list(config.items()))
def compute_output_shape(self, input_shape):
return input_shape
Спасибо @ y.selivonchyk за достойное обсуждениесо мной и @Yolo Swaggins за ваш вклад.