Я пытаюсь написать слой в лямбда-стиле в Керасе, который квантовает каждый вес в предыдущем слое 1D Dense (output_len) с точностью до 1/128.
Я пытался использовать функцию map_tf в бэкэнде Keras, но пока мне не повезло.
По сути, я пытаюсь применить следующую функцию поэлементно для входного тензора 1D:
def quantize(x):
'Squashes x (0->1) to steps of 1/128'
precision = 3
base = 0.0078125 # 1/128
if x < 0:
x = 0
elif x > 1:
x = 1
return round(base * round(float(x)/base) - 1/256, precision)
Так, например, это может быть результатом определенного прогноза:
input (after going through the CNN):
[0.21940812, 0.7998919 , 0.5420448 , 0.33850232 ]
output (after leaving the quantization layer):
[0.215, 0.793, 0.535, 0.332 ]
Возможно ли то, что я пытаюсь достичь?
Спасибо.