本人原来的笔记本配置不行,跑不起来,换了台式电脑运行正常,具体台式配置会另外写一篇安装tensorflow2.4.0教程
直接上代码,一共重复训练7次
from tensorflow.python.keras.datasets import cifar100
from tensorflow import keras
import tensorflow
class CifarCNN(object):
#编写模型 两层卷积层+两层池化层+全连接神经网络层
model = keras.models.Sequential([
#原输入图片[None,32,32,3]
#卷积层1: 32个 5*5*3的filter, 步长设置1,填充设same
#输出[None,32,32,3]
keras.layers.Conv2D(32, kernel_size=5, strides=1,padding='same',data_format='channels_last',activation='relu'),
#池化:1: 2*2窗口, 步长2,
#池化层输出[None,16,16,32]
keras.layers.MaxPool2D(pool_size=2, strides=2, padding='same'),
#卷积层2
#输入[None,16,16,32] 输出[None 16,16,64]
keras.layers.Conv2D(64, kernel_size=5,strides=1, padding='same',data_format='channels_last',activation='relu'),
#池化层,输入[None,16,16,64],因为观察窗口是2*2
# 输出[None, 8,8,64]
keras.layers.MaxPool2D(pool_size=2, strides=2, padding='same'),
#把形状拉平[None, 8,8,64] ->[None,8*8*64],展平
keras.layers.Flatten(),
#全连接层神经网络,1024个神经元,激活函数relu
keras.layers.Dense(1024,activation='relu'),
#100种种类,100个神经元神经网络,激活函数softmax
keras.layers.Dense(100,activation='softmax')
])
#获取训练集
def __init__(self):
(self.x_train, self.y_train),(self.x_test, self.y_test) = cifar100.load_data()
print(self.x_train.shape)
print(self.x_test.shape)
#对数据归一化
self.x_train = self.x_train/255.0
self.x_test = self.x_test/255.0
#编译模型,梯度下降使用adam
def Cifa_compile(self):
CifarCNN.model.compile(optimizer='Adam',loss='sparse_categorical_crossentropy',metrics='accuracy')
return None
def Cifa_fit(self):
his = CifarCNN.model.fit(self.x_train,self.y_train,batch_size=