如何解决最后一层在Keras中进行特征提取
我想在展平后保存图层的特征向量。我怎么做?作为输入,我想提供所有测试图像并让其预测结果,但是在分类层之前,我需要提取网络学习的特征并将其另存为矢量。有可能吗?
这是我的代码:
from keras.datasets import mnist
from keras.utils import to_categorical
from keras import layers
from keras import models
(train_img,train_label),(test_img,test_label) = mnist.load_data()
#preprocessing
train_img = train_img.reshape((60000,28,1))
train_img = train_img.astype('float32')/255
test_img = test_img.reshape((10000,1))
test_img = test_img.astype('float32')/255
train_label = to_categorical(train_label)
test_label = to_categorical(test_label)
# model
model = models.Sequential()
model.add(layers.Conv2D(32,(3,3),activation='relu',input_shape=(28,1)))
model.add(layers.MaxPooling2D((2,2)))
model.add(layers.Conv2D(64,activation='relu'))
model.add(layers.MaxPooling2D((2,activation='relu'))
#check summary for output
#model.summary()
model.add(layers.Flatten())
# !!! I need the a vector of features that this layer learned!!!!
model.add(layers.Dense(64,activation='relu'))
model.add(layers.Dense(10,activation='softmax'))
#model.summary()
model.compile(optimizer='rmsprop',loss='categorical_crossentropy',metrics=['accuracy'])
# training
model.fit(train_img,train_label,epochs=5,batch_size=64)
解决方法
您可以为特定图层设置名称:
model.add(layers.Dense(64,activation='relu',name='features'))
训练完成后,您可以得到重量:
model.get_layer('features').get_weights()[0]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。