训练振动图像数据集:
trainsetG | testsetG |
---|---|
5*69=345 | 5*20=100 |
展示:
代码展示:
"""
Caroline 2020.08.04 使用Keras建立自编码器
2020.11.06
#首先,准备数据并将其归一化和向量化
#然后,建立一个全连接的编码器和解码器
#用卷积层搭建自编码器:当输入是图像时,使用卷积;卷积自编码器的编码器部分由卷积层和池化层构成,Maxpooling负责空域下采样,
# 解码器由卷积层和上采样层构成
#效果:训练CAE显示原图 & 编码特征图 & 重构图
"""
from __future__ import print_function
from keras.layers import Input,Dense,Convolution2D,MaxPooling2D,UpSampling2D #bechanged
from keras.models import Model
from keras.datasets import mnist
import numpy as np
from keras import utils as np_utils
np.random.seed(1337) # for reproducibility
import time
import datetime
from scipy import misc
import imageio
import scipy
import matplotlib.pyplot as plt
import glob #用于获取文件夹和文件信息
import re # 主要用于字符串匹配
import keras
#计算时间开始
start_time = time.time()
# 时间差计算函数
def subtime(date1, date2):
date1 = datetime.datetime.strptime(date1, "%Y-%m-%d %H:%M:%S")
date2 = datetime.datetime.strptime(date2, "%Y-%m-%d %H:%M:%S")
return date2 - date1
startdate = datetime.datetime.now() # 获取当前时间
startdate = startdate.strftime("%Y-%m-%d %H:%M:%S") # 当前时间转换为指定字符串格式
#### 1.准备数据 ####
num_classes = 6 #类别
batch_size = 120 #批量大小
epochs = 120 #训练次数
# ①定义导入数据的函数,读取图片及标注
def loadImages(imgpath):
img = imageio.imread(imgpath)#imgpath:所有匹配的文件路径列表
if img is None:
return None
img = img.astype('float32') # 转成浮点32位数据类型
img /= 255 # 将图片归一化,加速模型训练速度
#print(img[1].shape)
return img
# ②对图片进行维度变换
def changeDim(img):
img = np.expand_dims(img,axis=2) # 灰度图像为2D--change3 →(223, 28, 28) (223, 11)
img = np.expand_dims(img,axis=0) # 灰度图像前加一批量通道
return img
# ③读入图像数据
def loadDataset( imgpath, pathtype):
images = loadImages(imgpath[0]) # 一幅图片的变维方法
images = changeDim(imag