Функция keras.backend.function возвращает ошибку AttributeError: слой не подключен, нет входных данных для возврата - PullRequest
0 голосов
/ 02 апреля 2019

Я хочу знать средний результат нейтральной сети для настройки.Я проектирую свою модель и использую keras.backend.function, но потерпел неудачу (AttributeError: Плотный слой не подключен, нет входных данных для возврата).Вот мой пример:

import tensorflow as tf
from tensorflow.keras.layers import Dense
from keras import backend as K
class my_model(tf.keras.Model):
    '''
    here I design a very simple model for test
    '''
    def __init__(self):
        super(my_model,self).__init__(name='my_model')

        self.dense1 = Dense(10,activation = 'relu',kernel_initializer = tf.keras.initializers.truncated_normal())
        self.dense2 = Dense(2,activation = 'softmax',kernel_initializer = tf.keras.initializers.truncated_normal())

    def call(self, inputs):
        inputs = self.dense1(inputs)
        return self.dense2(inputs)
def extract_layer_output(model, layer_name, input_data):
    layer_output_fn = K.function([model.layers[0].input], [model.get_layer(layer_name).output])
    layer_output = layer_output_fn([input_data])

    return(layer_output[0])   
X_train = np.array([[1,2], [6,5], [8,2]])
y = np.array([[0,1],[0,1],[1,0]])
model = my_model()
model.compile(optimizer=tf.train.AdamOptimizer(0.01),  
                loss='categorical_crossentropy',  # categorical_crossentropy
                metrics=['accuracy'])  # mean absolute error
model.fit(X_train,y, epochs=40, steps_per_epoch=3)   
result = extract_layer_output(model,'dense',X_train)   # 
# AttributeError: Layer dense is not connected, no input to return.

И вдохновлен AttributeError: Слой не имеет входящих узлов или AttributeError: Слой никогда не вызывался

Я пытался:

x_input = tf.keras.Input(shape = [2])
model(x_input)
result = extract_layer_output(model,'dense',X_train)

после того, как я подгоняю модель, но возникает другая ошибка: Ошибка типа: Ошибка интерпретации ключа feed_dict как Tensor: Tensor Tensor ("input_1_1: 0", shape = (?, 2), dtype = float32)не является элементом этого графа.

...