Входной слой tf.keras только для использования во время вывода - PullRequest
0 голосов
/ 06 апреля 2020

Я хотел бы создать вспомогательный входной слой, который я использую исключительно во время вывода, но не могу понять, как это сделать. Я хотел бы сделать что-то вроде следующего:

inputs = tf.keras.Input(shape=(784,))

x = tf.keras.layers.Dense(64, activation='relu')(inputs)
x = tf.keras.layers.InputLayer((64,), name='input_foo')(x)
predictions = tf.keras.layers.Dense(64, activation='relu')(x)

model = tf.keras.Model(inputs=inputs, outputs=predictions)
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
model.fit(data, labels)  # starts training
model.save('foo.h5')

model = tf.keras.models.load_model('foo.h5')
inference_model = tf.keras.Model(model.get_layer('input_2'), model.output)

Однако, я получаю следующую ошибку при загрузке:

ValueError: Graph disconnected: cannot obtain value for tensor Tensor("input_foo_2:0", shape=(None, 64), dtype=float32) at layer "input_foo". The following previous layers were accessed without issue: []

1 Ответ

0 голосов
/ 09 апреля 2020

Просто создайте новую модель с input2 и output и загрузите веса из обученной модели. или попробуйте написать модель подкласса, используя обучающий параметр в методе вызова, как показано ниже.

def customModel(tf.kears.models.Model):
    def call(inputs, training=True):
        if training == True:
            #do your model for training
        else:
            #do your model for inference 
...