模型任意层结果可视化
前提条件:
- 预训练模型
- sklearn,matplotlib包
- 数据
原理:T-SNE方法
T-SNE方法可以将高维数据进行降维,保留主要维度的参数,一般降至二维或是三维。用于可视化是非常直观的。
具体的方法,请自行百度。
代码
导入相关包
from keras.models import Model
from keras.utils import np_utils
from modles.alexnet import AlexNet
import matplotlib.pyplot as plt
from sklearn import manifold
import numpy as np
from keras.callbacks import ReduceLROnPlateau
import matplotlib as mpl
导入数据
这里的label不能使用one-hot的形式,需要使用数字的形式。
img_size = 200
x = np.load('dataset/x%s.npy' % img_size, mmap_mode=None, allow_pickle=True, fix_imports=True, encoding='ASCII')
y = np.load('dataset/y%s.npy' % img_size, mmap_mode=None, allow_pickle=True, fix_imports=True, encoding='ASCII')
val_x = np.load('dataset/val-mag-x%s.npy' % img_size, mmap_mode=None, allow_pickle=True, fix_imports=True, encoding='ASCII')
val_y = np.load('dataset/val-mag-y%s.npy' % img_size, mmap_mode=None, allow_pickle=True, fix_imports=True, encoding='ASCII')
print("successfully load x%s.npy" % img_size)
X_train = x
X_test = val_x
y_train = y
y_test = val_y
X_train = np.stack(X_train, axis=0)
y_train = np.stack(y_train, axis=0)
X_test = np.stack(X_test, axis=0)
y_test = np.stack(y_test, axis=0)
print("Num train_imgs: %d" % (len(X_train)))
print("Num test_imgs: %d" % (len(X_test)))
# # one hot encode outputs
y_train = np_utils.to_categorical(y_train)
y_test = np_utils.to_categorical(y_test)
X_train = X_train.reshape((len(X_train), img_size, img_size, 3))
X_test = X_test.reshape((len(X_test), img_size, img_size, 3))
print(X_train.shape)
print(y_train.shape)
print(X_test.shape