1.利用框架:
TensorFlow+keras
2.提取深度网络某一层特征的核心函数:
import keras.backend as K
def get_activation(model, layer, X_batch):
get_activations= K.function([model.layers[0].input, K.learning_phase()],[model.layers[layer].output])
activations=get_activations([X_batch, 0])
return activations
使用示例:
# generate extract-feature data
X_extractfeature = HDF5Matrix(hdf5path, 'X', 0, dataSetLength, normalizer = scaleData)
y_extractfeature = HDF5Matrix(hdf5path, 'y', 0, dataSetLength)
count=range(0, len(X_extractfeature), 100)
for i in range(len(count)):
if i<len(count)-1:
myfeature=get_activation(model, 11, X_extractfeature[count[i]:count[i+1]])
if i==len(count)-1:
myfeature=get_activation(model, 11, X_extractfeature[count[i]:len(X_extractfeature)])
3.提取深度网络各层信息:
for layer in model.layers:
print("{} output shape: {}".format(layer.name, layer.output_shape))
print layer.output