olivettifaces是纽约大学的一个比较小的人脸库,由40个人的400张图片构成,即每个人的人脸图片为10张。每张图片的灰度级为8位,每个像素的灰度大小位于0-255之间,每张图片大小为64×64。图片大小是1190*942,一共有20*20张人脸,故每张人脸大小是(1190/20)*(942/20)即57*47=2679本文所用的训练数据就是这张图片,400个样本,40个类别。
#coding:utf-8
"""
tensorflow 1.1
matplotlib 2.02
python3
"""
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt
import pickle
#读取数据集
with open('facedataset.pickle','rb') as f:
(train_data,train_labels),(test_data,test_labels) = pickle.load(f)
#shuffle data
np.random.seed(100)
train_data = np.random.permutation(train_data)
np.random.seed(100)
train_labels = np.random.permutation(train_labels)
np.random.seed(200)
train_data = np.random.permutation(test_data)
np.random.seed(200)
train_labels = np.random.permutation(test_labels)
input_dim = 57*47
hidden_encoder_dim1 =