Keras Случайный нормальный бэкэнд не разрешен - PullRequest
0 голосов
/ 18 октября 2018

Я работаю над проектом, в котором мне нужно выполнить следующую задачу:

Учитывая данные предыдущего слоя в кератах, A, сделать следующее:

  1. вычислить норму l2 входных данных этого слоя

  2. вычислить норму l2 весового тензора из предыдущего слоя.

  3. умножитьэти две величины с помощью тензора той же формы, что и А, который полон гауссовского шума.

Добавьте эту новую вычисленную величину обратно в А и отправьте ее на следующий слой.

Current У меня есть следующая функция, которую я использовал:

def add_noise(sample,filter_scalar):
        input_shape = sample.__dict__["_keras_shape"]
        x = input_shape[1]
        y = input_shape[2]
        features = input_shape[3]

        #compute |A| * |B|
        dot_a = keras.layers.multiply([sample,sample])
        norm_a = Lambda(lambda x: filter_scalar * K.sqrt(K.cumsum(x)))(dot_a)

        #compute wij
        gaussian_weights = K.random_normal(shape=(x,y,features),mean=0.0,stddev=1.0)
        # keras.layers.add([gaussian_weights,gaussian_weights])
        #connect layers together again
        # norm_product = Lambda()(sample)
        # print("norm product",norm_product)

        return keras.layers.add([sample,norm_a])

Я намерен вызывать эту функцию между слоями в функциональном API.

Как вы можете видеть, яУ меня проблемы с генерацией гауссовского шума.

...