Как установить значения ядра для сверточного слоя Keras в TF 2.0? - PullRequest
0 голосов
/ 01 ноября 2019

Как мне установить значения ядра для слоя Conv1D в TF 2.0?

model = tf.keras.Sequential()
model.add(tf.keras.layers.Conv1D(1, 3, activation='relu', input_shape=(6, 1)))
inp = tf.reshape(tf.constant([1,3,3,0,1,2.]), (1, 6, 1))
print(f'{model(inp)}')
# [[[3.6809962 ]
#   [5.356483  ]
#   [2.4707034 ]
#   [0.94388485]]]

Я бы хотел получить тот же результат, что и с mxnet:

conv = mx.gluon.nn.Conv1D(channels=1, kernel_size=3)

input_data = mx.nd.array((1,3,3,0,1,2))
kernel = mx.nd.array((2,0,1))

output_data = apply_conv(input_data, kernel, conv)
print(output_data)
# [[[5. 6. 7. 2.]]]

1 Ответ

0 голосов
/ 01 ноября 2019

Данные :

import numpy as np

input_data = np.array([1,3,3,0,1,2]).reshape((1,-1,1)) #(1 sample, length, 1 channel)
kernel = np.array([2,0,1]).reshape((3,1,1)) #(size, input_channels, output_channels)   
bias = np.zeros((1,)) # 1 channel

Модель :

Дайте имя слою, чтобы сделать его проще.

model.add(tf.keras.layers.Conv1D(1, 3, activation='relu', input_shape=(6,1), name='the_layer'))

Установить веса :

model.get_layer('the_layer').set_weights([kernel, bias])

Прогноз :

output_data = model.predict(input_data)

Если этоне должен быть обучаемым слоем, используйте только функцию TF для свертки.

...