如何批量获取Keras中间层的输出?
How to get output of intermediate Keras layers in batches?
我不确定如何在 Keras 中获取中间层的输出。我已经阅读了关于 Whosebug 的其他问题,但它们似乎是以单个样本作为输入的函数。我也想批量获取输出特征(在中间层)。这是我的模型:
model = Sequential()
model.add(ResNet50(include_top = False, pooling = RESNET50_POOLING_AVERAGE, weights = resnet_weights_path)) #None
model.add(Dense(784, activation = 'relu'))
model.add(Dense(NUM_CLASSES, activation = DENSE_LAYER_ACTIVATION))
model.layers[0].trainable = True
训练模型后,在我的代码中我想获得第一个密集层(784 维)之后的输出。这是正确的做法吗?
pred = model.layers[1].predict_generator(data_generator, steps = len(data_generator), verbose = 1)
我是 Keras 的新手,所以我有点不确定。训练完成后是否需要重新编译模型?
否,训练后不需要再次编译
基于您的顺序模型。
Layer 0 :: model.add(ResNet50(include_top = False, pooling = RESNET50_POOLING_AVERAGE, weights = resnet_weights_path)) #None
Layer 1 :: model.add(Dense(784, activation = 'relu'))
Layer 2 :: model.add(Dense(NUM_CLASSES, activation = DENSE_LAYER_ACTIVATION))
访问图层,如果使用功能API方法可能会有所不同。
使用 Tensorflow 2.1.0,您可以在想要访问中间输出时尝试这种方法。
model_dense_784 = Model(inputs=model.input, outputs = model.layers[1].output)
pred_dense_784 = model_dense_784.predict(train_data_gen, steps = 1) # predict_generator is deprecated
print(pred_dense_784.shape) # Use this to check Output Shape
强烈建议使用 model.predict()
方法,而不是 model.predict_generator()
,因为它已经 弃用 。
您还可以使用 shape()
方法来检查 生成的输出 是否与 model.summary()
上指示的 相同 。
我不确定如何在 Keras 中获取中间层的输出。我已经阅读了关于 Whosebug 的其他问题,但它们似乎是以单个样本作为输入的函数。我也想批量获取输出特征(在中间层)。这是我的模型:
model = Sequential()
model.add(ResNet50(include_top = False, pooling = RESNET50_POOLING_AVERAGE, weights = resnet_weights_path)) #None
model.add(Dense(784, activation = 'relu'))
model.add(Dense(NUM_CLASSES, activation = DENSE_LAYER_ACTIVATION))
model.layers[0].trainable = True
训练模型后,在我的代码中我想获得第一个密集层(784 维)之后的输出。这是正确的做法吗?
pred = model.layers[1].predict_generator(data_generator, steps = len(data_generator), verbose = 1)
我是 Keras 的新手,所以我有点不确定。训练完成后是否需要重新编译模型?
否,训练后不需要再次编译
基于您的顺序模型。
Layer 0 :: model.add(ResNet50(include_top = False, pooling = RESNET50_POOLING_AVERAGE, weights = resnet_weights_path)) #None
Layer 1 :: model.add(Dense(784, activation = 'relu'))
Layer 2 :: model.add(Dense(NUM_CLASSES, activation = DENSE_LAYER_ACTIVATION))
访问图层,如果使用功能API方法可能会有所不同。
使用 Tensorflow 2.1.0,您可以在想要访问中间输出时尝试这种方法。
model_dense_784 = Model(inputs=model.input, outputs = model.layers[1].output)
pred_dense_784 = model_dense_784.predict(train_data_gen, steps = 1) # predict_generator is deprecated
print(pred_dense_784.shape) # Use this to check Output Shape
强烈建议使用 model.predict()
方法,而不是 model.predict_generator()
,因为它已经 弃用 。
您还可以使用 shape()
方法来检查 生成的输出 是否与 model.summary()
上指示的 相同 。