from sklearn.datasets import fetch_lfw_people
from matplotlib import pyplot as plt
# Kerasからモデル作成用モジュール
from keras import models, layers
from keras.utils import plot_model
# データロード
lfw = fetch_lfw_people(data_home='./scikit_learn_data/', min_faces_per_person=100, resize=0.5)
X = lfw.data
v,h = lfw.images.shape[1:3] # 画像の垂直・水平サイズを保持する
n = X.shape[0] # 学習データ数を保持する
X = X.reshape([n, v, h, 1])
model = models.load_model('./model_cnn_adam.h5')
plot_model(model, show_shapes=True, to_file='model_cnn_adam.png')
print(model.layers[6].name)
model_mid = models.Model(inputs=model.input, outputs=[model.layers[6].output])
plot_model(model_mid, show_shapes=True,to_file='model_cnn_adam_mid.png')
X.shape
plt.imshow(X[0].transpose(2,0,1)[0], cmap='gray')
model_output = model_mid.predict(X[0:1])
model_output.shape
plt.figure(figsize=(10, 10))
layer_out_tr = model_output[0].transpose(2,0,1)
for i in range(64):
subplt = plt.subplot(8,8, i+1)
subplt.imshow(layer_out_tr[i], cmap='gray')
plt.savefig('.\model_layer_64_max_pooling2d_2.jpg')
plt.show()