В обычном коде я делаю что-то вроде этого, и все работает нормально:
from keras.layers import Input, Dense
from keras.models import Model
import keras.backend as K
import numpy as np
import tensorflow as tf
from sklearn.datasets import make_blobs
X, y = make_blobs(500,50,2)
def make_network1():
input_layer = Input((50,))
layer1 = Dense(100,name='network1_dense1')(input_layer)
output = Dense(50,name='network1_dense2')(layer1)
model = Model(input_layer,output)
return model
def make_network2():
input_layer = Input((50,))
layer1 = Dense(100,name='network2_dense1')(input_layer)
output = Dense(1,name='network2_output')(layer1)
model = Model(input_layer,output)
return model
network1 = make_network1()
network2 = make_network2()
output = network2(network1.output)
model = Model(network1.input, output)
Теперь я хочу поэкспериментировать с методом .get_layer
и атрибутом .output
в Keras, заменивпоследняя строка кода с:
model = Model(network1.input, network2.get_layer('network2_output').output)
Затем выдается следующая ошибка:
График отключен: невозможно получить значение для тензорного тензора ("input_4: 0", shape =(?, 50), dtype = float32) на уровне "input_4".Следующие предыдущие слои были доступны без проблем: []
Мой вопрос
Однако, не должно ли быть output
и network2.get_layer('network2_output').output
одним и тем же?Когда я пытаюсь распечатать их обоих, он говорит:
Тензор ("model_14 / network2_output / BiasAdd: 0", shape = (?, 1), dtype = float32)
и
Тензор ("network2_output_1 / BiasAdd: 0", shape = (?, 1), dtype = float32)
И network2
уже подключен к выходу network1
, я не понимаю, почему он отключен.Как заставить код работать с методами .get_layer
и .output
?
Я использую keras == 2,24 и tenorflow-gpu == 1,5.