Представьте себе полностью связанную нейронную сеть с последними двумя слоями следующей структуры:
[Dense]
units = 612
activation = softplus
[Dense]
units = 1
activation = sigmoid
Выходное значение сети равно 1, но я хотел бы знать, что входной сигнал x для сигмоидальной функции (должно быть некоторое большое число, так как sigm (x) здесь 1).
Folllowing ответ indraforyou Мне удалось получить выходные данные и веса слоев Keras:
outputs = [layer.output for layer in model.layers[-2:]]
functors = [K.function( [model.input]+[K.learning_phase()], [out] ) for out in outputs]
test_input = np.array(...)
layer_outs = [func([test_input, 0.]) for func in functors]
print layer_outs[-1][0] # -> array([[ 1.]])
dense_0_out = layer_outs[-2][0] # shape (612, 1)
dense_1_weights = model.layers[-1].weights[0].get_value() # shape (1, 612)
dense_1_bias = model.layers[-1].weights[1].get_value()
x = np.dot(dense_0_out, dense_1_weights) + dense_1_bias
print x # -> -11.7
Как x может быть отрицательным числом? В этом случае вывод последних слоев должен быть рядом ближе к 0.0, чем 1.0. Являются ли dense_0_out
или dense_1_weights
неправильными выходами или весами?