Ручная инициализация conv1d в TensorFlow - PullRequest
0 голосов
/ 25 августа 2018

Как я могу установить пользовательские коэффициенты на tf.layers.conv1d.Я узнал, как читать текущие коэффициенты, но как я могу их записать?

import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt

sess = tf.Session()
order = 5
x = np.zeros(30)
x[10] = 1
y = tf.layers.conv1d(inputs=tf.reshape(x,[1, len(x), 1]),
                     filters=1,
                     kernel_size=order,
                     padding='same')
sess.run(tf.global_variables_initializer())
y_out = sess.run(y)

# get coef
coef = sess.run(tf.all_variables()[-2].value())
print(coef.reshape(order))

Вот ссылка на блокнот с кодом на google colab: https://colab.research.google.com/drive/1YNSzKmtC88b__LqYcfD-tFHFG3jOZIAz

В общем, яменя интересует, как сделать FIR-фильтр в TensorFlow.

1 Ответ

0 голосов
/ 25 августа 2018

Я понял!Существует параметр kerner_initializer.

И это решение

init_coef = np.array([1,2,3,4,5])[::-1]
init_coef = tf.initializers.constant(init_coef)
y = tf.layers.conv1d(inputs=tf.reshape(x,[1, len(x), 1]),
                     filters=1,
                     kernel_size=order,
                     padding='same',
                     kernel_initializer=init_coef)
...