当前位置: 首页 > news >正文

随州做网站江苏省建筑网站

随州做网站,江苏省建筑网站,网站升级中 html,竞价推广的本质是什么目录 1. 说明2. 宝可梦模型2.1 导入相关库2.2 建立模型2.3 模型编译2.4 数据生成器2.5 模型训练2.6 模型保存 3. 宝可梦的CNN模型可视化结果图4. 完整代码5. 宝可梦的迁移学习 1. 说明 本篇文章是CNN的另外一个例子#xff0c;宝可梦模型#xff0c;是自制数据集的例子。之前… 目录 1. 说明2. 宝可梦模型2.1 导入相关库2.2 建立模型2.3 模型编译2.4 数据生成器2.5 模型训练2.6 模型保存 3. 宝可梦的CNN模型可视化结果图4. 完整代码5. 宝可梦的迁移学习 1. 说明 本篇文章是CNN的另外一个例子宝可梦模型是自制数据集的例子。之前的例子都是python中库自带的但是这次的例子是自己搜集数据集如下图所示整理。 之前简单介绍如何自制数据集在这里继续介绍将自制的数据划分为训练集测试集和验证集。 首先建立一个pokeman的文件夹然后利用之前介绍的爬虫下载5种宝可梦的图片然后运行下面代码。 import glob import os import cv2 import numpy as np import random import tensorflow as tf from tensorflow import kerastf.random.set_seed(520) np.random.seed(520) os.environ[TF_CPP_MIN_LOG_LEVEL] 2 assert tf.__version__.startswith(2.)def Data_Generation():X_data [];Y_data []path_data [];path_label []# path_fileos.getcwd() #获取当前工作目录files os.listdir(pokeman) # 获取pokeman文件夹下的所有文件名for file in files:print(file)for path in glob.glob(pokeman/ file /*.*):if jpg or png or bmp in path: # 只获取jpg/png/bmp格式的图片path_data.append(path)random.shuffle(path_data) # 打乱数据for paths in path_data: #if bulbasaur in paths: # 为每一类打标签path_label.append(0)elif charmander in paths:path_label.append(1)elif mewtwo in paths:path_label.append(2)elif pikachu in paths:path_label.append(3)elif squirtle in paths:path_label.append(4)img cv2.imread(paths) # 用opencv读图片数据img cv2.cvtColor(img, cv2.COLOR_BGR2RGB) # cv的图片通道是BGR要转换成送入NN的RGBimg cv2.resize(img, (96, 96)) # 统一图片大小X_data.append(img)L len(path_data)Y_data path_labelX_data np.array(X_data, dtypefloat)Y_data np.array(Y_data, dtypeuint8)X_train X_data[0:int(L * 0.8)] # 将数据分为训练集 验证集和测试集 比例为 0.8:0.1:0.1print(X_train.shape)Y_train Y_data[0:int(L * 0.8)]print(Y_train.shape)X_valid X_data[int(L * 0.8):int(L * 0.9)]Y_valid Y_data[int(L * 0.8):int(L * 0.9)]X_test X_data[int(L * 0.9):]Y_test Y_data[int(L * 0.9):]return X_train, Y_train, X_valid, Y_valid, X_test, Y_test, LX_train, Y_train, X_valid, Y_valid, X_test, Y_test, L Data_Generation() np.savez(os.path.join(pokeman, data.npz), X_trainX_train, Y_trainY_train, X_validX_valid, Y_validY_valid,X_testX_test, Y_testY_test) # 打包成npz的压缩格式 储存在工程文件目录中这样运行程序进行测试时就不用每次都重复生成数据直接调用npz就好2. 宝可梦模型 2.1 导入相关库 以下第三方库是python专门用于深度学习的库。需要提前下载并安装 from keras.models import Sequential from keras.layers import Dense, Conv2D, Flatten, Dropout, MaxPool2D from keras import optimizers, losses from keras.preprocessing.image import ImageDataGenerator import sys, os # 目录结构 import matplotlib.pyplot as plt from keras.callbacks import EarlyStopping, ReduceLROnPlateau2.2 建立模型 这是采用另外一种书写方式建立模型。 构建了三层卷积层三层池化层然后是展平层(将二维特征图拉直输入给全连接层)然后是三层全连接层并且加入了dropout层。 1.模型建立 # 1.卷积层输入图片大小(96, 96, 3), 卷积核个数16,卷积核大小(5, 5), 激活函数relu conv_layer1 Conv2D(input_shape(96, 96, 3), filters16, kernel_size(5, 5), activationrelu) # 2.最大池化层池化层大小(2, 2), 步长为2 max_pool1 MaxPool2D(pool_size(2, 2), strides2) # 3.卷积层卷积核个数32,卷积核大小(5, 5), 激活函数relu conv_layer2 Conv2D(filters32, kernel_size(5, 5), activationrelu) # 4.最大池化层池化层大小(2, 2), 步长为2 max_pool2 MaxPool2D(pool_size(2, 2), strides2) # 5.卷积层卷积核个数64,卷积核大小(5, 5), 激活函数relu conv_layer3 Conv2D(filters64, kernel_size(5, 5), activationrelu) # 6.最大池化层池化层大小(2, 2), 步长为2 max_pool3 MaxPool2D(pool_size(2, 2), strides2) # 7.卷积层卷积核个数128,卷积核大小(5, 5), 激活函数relu conv_layer4 Conv2D(filters128, kernel_size(5, 5), activationrelu) # 8.最大池化层池化层大小(2, 2), 步长为2 max_pool4 MaxPool2D(pool_size(2, 2), strides2) # 9.展平层 flatten_layer Flatten() # 10.Dropout层, Dropout(0.2) third_dropout Dropout(0.2) # 11.全连接层/隐藏层1240个节点, 激活函数relu hidden_layer1 Dense(240, activationrelu) # 12.全连接层/隐藏层284个节点, 激活函数relu hidden_layer3 Dense(84, activationrelu) # 13.Dropout层, Dropout(0.2) fif_dropout Dropout(0.5) # 14.输出层输出节点个数5, 激活函数softmax output_layer Dense(5) model Sequential([conv_layer1, max_pool1, conv_layer2, max_pool2,conv_layer3, max_pool3, conv_layer4, max_pool4,flatten_layer, third_dropout, hidden_layer1,hidden_layer3, fif_dropout, output_layer])2.3 模型编译 模型的优化器是Adam学习率是0.01, 损失函数是binary_crossentropy二分类交叉熵 性能指标是正确率accuracy 另外还加入了回调机制。 回调机制简单理解为训练集的准确率持续上升而验证集准确率基本不变此时已经出现过拟合应该调制学习率让验证集的准确率也上升。 2.模型编译 # 模型编译2分类binary_crossentropy model.compile(optimizeroptimizers.Adam(lr1e-3),losslosses.CategoricalCrossentropy(from_logitsTrue),metrics[accuracy]) model.summary() # 模型统计# 回调机制 动态调整学习率 reduce ReduceLROnPlateau(monitorval_accuracy, # 设置监测的值为val_accuracypatience2, # 设置耐心容忍次数为2verbose1, #factor0.5, # 缩放学习率的值为0.5学习率将以lr lr*factor的形式被减少min_lr0.000001 # 学习率最小值0.000001) # 监控val_accuracy增加趋势2.4 数据生成器 加载自制数据集 利用数据生成器对数据进行数据加强即每次训练时输入的图片会是原图片的翻转平移旋转缩放这样是为了降低过拟合的影响。 然后通过迭代器进行数据加载目标图像大小统一尺寸96963设置每次加载到训练网络的图像数目设置而分类模型(默认one-hot编码)并且数据打乱。 # 生成器对象1: 归一化 gen ImageDataGenerator(rescale1 / 255.0) # 生成器对象2: 归一化 数据加强 gen1 ImageDataGenerator(rescale1 / 255.0,rotation_range5, # 图片随机旋转的角度5度width_shift_range0.1,height_shift_range0.1, # 水平和竖直方向随机移动0.1shear_range0.1, # 剪切变换的程度0.1zoom_range0.1, # 随机放大的程度0.1fill_modenearest) # 当需要进行像素填充时选择最近的像素进行填充 # 拼接训练和验证的两个路径 train_path os.path.join(sys.path[0], data, train) val_path os.path.join(sys.path[0], data, val) print(训练数据路径 , train_path) print(验证数据路径: , val_path) # 训练和验证的两个迭代器 train_iter gen1.flow_from_directory(train_path, # 训练train目录路径target_size(96, 96), # 目标图像大小统一尺寸96batch_size8, # 设置每次加载到内存的图像大小class_modecategorical, # 设置分类模型(默认one-hot编码)shuffleTrue) # 是否打乱 val_iter gen.flow_from_directory(val_path, # 测试val目录路径target_size(96, 96), # 目标图像大小统一尺寸96batch_size8, # 设置每次加载到内存的图像大小class_modecategorical, # 设置分类模型(默认one-hot编码)shuffleTrue) # 是否打乱2.5 模型训练 模型训练的次数是30,每1次循环进行测试 3.模型训练 # 模型的训练 model.fit result model.fit(train_iter, # 设置训练数据的迭代器epochs30, # 循环次数30次validation_dataval_iter, # 验证数据的迭代器callbacks[reduce], # 回调机制设置为reducevalidation_freq1)2.6 模型保存 以.h5文件格式保存模型 4.模型保存 # 保存训练好的模型 model.save(my_bkm.h5)5.模型训练时的可视化 # 显示训练集和验证集的acc和loss曲线 acc result.history[accuracy] # 获取模型训练中的accuracy val_acc result.history[val_accuracy] # 获取模型训练中的val_accuracy loss result.history[loss] # 获取模型训练中的loss val_loss result.history[val_loss] # 获取模型训练中的val_loss # 绘值acc曲线 plt.figure(1) plt.plot(acc, labelTraining Accuracy) plt.plot(val_acc, labelValidation Accuracy) plt.title(Training and Validation Accuracy) plt.legend() plt.savefig(my_bkm_acc.png, dpi600) # 绘制loss曲线 plt.figure(2) plt.plot(loss, labelTraining Loss) plt.plot(val_loss, labelValidation Loss) plt.title(Training and Validation Loss) plt.legend() plt.savefig(my_bkm_loss.png, dpi600) plt.show() # 将结果显示出来3. 宝可梦的CNN模型可视化结果图 Found 116 images belonging to 5 classes. Epoch 1/3056/118 [................] - ETA: 12s - loss: 1.5176 - accuracy: 0.3061F:\python_code\python_study\venv\lib\site-packages\PIL\Image.py:993: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA imagesPalette images with Transparency expressed in bytes should be 118/118 [] - 25s 205ms/step - loss: 1.3913 - accuracy: 0.3863 - val_loss: 1.1440 - val_accuracy: 0.4310 - lr: 0.0010 Epoch 2/30 118/118 [] - 22s 190ms/step - loss: 0.9990 - accuracy: 0.5646 - val_loss: 0.8448 - val_accuracy: 0.6466 - lr: 0.0010 Epoch 3/30 118/118 [] - 22s 190ms/step - loss: 0.8921 - accuracy: 0.5966 - val_loss: 0.8387 - val_accuracy: 0.5862 - lr: 0.0010 Epoch 4/30 118/118 [] - 22s 186ms/step - loss: 0.7903 - accuracy: 0.6649 - val_loss: 0.6711 - val_accuracy: 0.6638 - lr: 0.0010 Epoch 5/30 118/118 [] - 22s 186ms/step - loss: 0.8736 - accuracy: 0.6638 - val_loss: 0.5738 - val_accuracy: 0.7759 - lr: 0.0010 Epoch 6/30 118/118 [] - 23s 192ms/step - loss: 0.6817 - accuracy: 0.7225 - val_loss: 0.6160 - val_accuracy: 0.7241 - lr: 0.0010 Epoch 7/30 118/118 [] - ETA: 0s - loss: 0.6360 - accuracy: 0.7204 Epoch 7: ReduceLROnPlateau reducing learning rate to 0.0005000000237487257. 118/118 [] - 24s 201ms/step - loss: 0.6360 - accuracy: 0.7204 - val_loss: 0.5757 - val_accuracy: 0.7586 - lr: 0.0010 Epoch 8/30 118/118 [] - 25s 213ms/step - loss: 0.5462 - accuracy: 0.7994 - val_loss: 0.5143 - val_accuracy: 0.7845 - lr: 5.0000e-04 Epoch 9/30 118/118 [] - 23s 198ms/step - loss: 0.5129 - accuracy: 0.8282 - val_loss: 0.4831 - val_accuracy: 0.8103 - lr: 5.0000e-04 Epoch 10/30 118/118 [] - 26s 218ms/step - loss: 0.4712 - accuracy: 0.8410 - val_loss: 0.4913 - val_accuracy: 0.8276 - lr: 5.0000e-04 Epoch 11/30 118/118 [] - 24s 204ms/step - loss: 0.3914 - accuracy: 0.8954 - val_loss: 0.4444 - val_accuracy: 0.8190 - lr: 5.0000e-04 Epoch 12/30 118/118 [] - 26s 217ms/step - loss: 0.4182 - accuracy: 0.8730 - val_loss: 0.2892 - val_accuracy: 0.8793 - lr: 5.0000e-04 Epoch 13/30 118/118 [] - 24s 203ms/step - loss: 0.3533 - accuracy: 0.8965 - val_loss: 0.3292 - val_accuracy: 0.8707 - lr: 5.0000e-04 Epoch 14/30 118/118 [] - ETA: 0s - loss: 0.3113 - accuracy: 0.9093 Epoch 14: ReduceLROnPlateau reducing learning rate to 0.0002500000118743628. 118/118 [] - 25s 216ms/step - loss: 0.3113 - accuracy: 0.9093 - val_loss: 0.3788 - val_accuracy: 0.8448 - lr: 5.0000e-04 Epoch 15/30 118/118 [] - 24s 205ms/step - loss: 0.2714 - accuracy: 0.9146 - val_loss: 0.2918 - val_accuracy: 0.8793 - lr: 2.5000e-04 Epoch 16/30 118/118 [] - 28s 236ms/step - loss: 0.2520 - accuracy: 0.9264 - val_loss: 0.2720 - val_accuracy: 0.8966 - lr: 2.5000e-04 Epoch 17/30 118/118 [] - 26s 223ms/step - loss: 0.2647 - accuracy: 0.9242 - val_loss: 0.3163 - val_accuracy: 0.8879 - lr: 2.5000e-04 Epoch 18/30 118/118 [] - ETA: 0s - loss: 0.2045 - accuracy: 0.9402 Epoch 18: ReduceLROnPlateau reducing learning rate to 0.0001250000059371814. 118/118 [] - 26s 218ms/step - loss: 0.2045 - accuracy: 0.9402 - val_loss: 0.2453 - val_accuracy: 0.8966 - lr: 2.5000e-04 Epoch 19/30 118/118 [] - 26s 222ms/step - loss: 0.1866 - accuracy: 0.9477 - val_loss: 0.2465 - val_accuracy: 0.8966 - lr: 1.2500e-04 Epoch 20/30 118/118 [] - ETA: 0s - loss: 0.1782 - accuracy: 0.9413 Epoch 20: ReduceLROnPlateau reducing learning rate to 6.25000029685907e-05. 118/118 [] - 24s 203ms/step - loss: 0.1782 - accuracy: 0.9413 - val_loss: 0.2706 - val_accuracy: 0.8793 - lr: 1.2500e-04 Epoch 21/30 118/118 [] - 25s 208ms/step - loss: 0.1486 - accuracy: 0.9498 - val_loss: 0.2947 - val_accuracy: 0.8879 - lr: 6.2500e-05 Epoch 22/30 118/118 [] - ETA: 0s - loss: 0.1581 - accuracy: 0.9530 Epoch 22: ReduceLROnPlateau reducing learning rate to 3.125000148429535e-05. 118/118 [] - 25s 212ms/step - loss: 0.1581 - accuracy: 0.9530 - val_loss: 0.2734 - val_accuracy: 0.8966 - lr: 6.2500e-05 Epoch 23/30 118/118 [] - 25s 212ms/step - loss: 0.1403 - accuracy: 0.9541 - val_loss: 0.2923 - val_accuracy: 0.8966 - lr: 3.1250e-05 Epoch 24/30 118/118 [] - 25s 210ms/step - loss: 0.1408 - accuracy: 0.9573 - val_loss: 0.2596 - val_accuracy: 0.9052 - lr: 3.1250e-05 Epoch 25/30 118/118 [] - 26s 225ms/step - loss: 0.1420 - accuracy: 0.9584 - val_loss: 0.2862 - val_accuracy: 0.8966 - lr: 3.1250e-05 Epoch 26/30 118/118 [] - ETA: 0s - loss: 0.1348 - accuracy: 0.9594 Epoch 26: ReduceLROnPlateau reducing learning rate to 1.5625000742147677e-05. 118/118 [] - 27s 226ms/step - loss: 0.1348 - accuracy: 0.9594 - val_loss: 0.2690 - val_accuracy: 0.9052 - lr: 3.1250e-05 Epoch 27/30 118/118 [] - 27s 227ms/step - loss: 0.1198 - accuracy: 0.9626 - val_loss: 0.2801 - val_accuracy: 0.9052 - lr: 1.5625e-05 Epoch 28/30 118/118 [] - ETA: 0s - loss: 0.1396 - accuracy: 0.9520 Epoch 28: ReduceLROnPlateau reducing learning rate to 7.812500371073838e-06. 118/118 [] - 26s 224ms/step - loss: 0.1396 - accuracy: 0.9520 - val_loss: 0.2825 - val_accuracy: 0.9052 - lr: 1.5625e-05 Epoch 29/30 118/118 [] - 25s 213ms/step - loss: 0.1296 - accuracy: 0.9658 - val_loss: 0.2830 - val_accuracy: 0.9052 - lr: 7.8125e-06 Epoch 30/30 118/118 [] - ETA: 0s - loss: 0.1255 - accuracy: 0.9605 Epoch 30: ReduceLROnPlateau reducing learning rate to 3.906250185536919e-06. 118/118 [] - 26s 225ms/step - loss: 0.1255 - accuracy: 0.9605 - val_loss: 0.2876 - val_accuracy: 0.8966 - lr: 7.8125e-06从以上结果可知模型的准确率达到了90%准确率还是很高的。 4. 完整代码 from keras.models import Sequential from keras.layers import Dense, Conv2D, Flatten, Dropout, MaxPool2D from keras import optimizers, losses from keras.preprocessing.image import ImageDataGenerator import sys, os # 目录结构 import matplotlib.pyplot as plt from keras.callbacks import EarlyStopping, ReduceLROnPlateau1.模型建立 # 1.卷积层输入图片大小(96, 96, 3), 卷积核个数16,卷积核大小(5, 5), 激活函数relu conv_layer1 Conv2D(input_shape(96, 96, 3), filters16, kernel_size(5, 5), activationrelu) # 2.最大池化层池化层大小(2, 2), 步长为2 max_pool1 MaxPool2D(pool_size(2, 2), strides2) # 3.卷积层卷积核个数32,卷积核大小(5, 5), 激活函数relu conv_layer2 Conv2D(filters32, kernel_size(5, 5), activationrelu) # 4.最大池化层池化层大小(2, 2), 步长为2 max_pool2 MaxPool2D(pool_size(2, 2), strides2) # 5.卷积层卷积核个数64,卷积核大小(5, 5), 激活函数relu conv_layer3 Conv2D(filters64, kernel_size(5, 5), activationrelu) # 6.最大池化层池化层大小(2, 2), 步长为2 max_pool3 MaxPool2D(pool_size(2, 2), strides2) # 7.卷积层卷积核个数128,卷积核大小(5, 5), 激活函数relu conv_layer4 Conv2D(filters128, kernel_size(5, 5), activationrelu) # 8.最大池化层池化层大小(2, 2), 步长为2 max_pool4 MaxPool2D(pool_size(2, 2), strides2) # 9.展平层 flatten_layer Flatten() # 10.Dropout层, Dropout(0.2) third_dropout Dropout(0.2) # 11.全连接层/隐藏层1240个节点, 激活函数relu hidden_layer1 Dense(240, activationrelu) # 12.全连接层/隐藏层284个节点, 激活函数relu hidden_layer3 Dense(84, activationrelu) # 13.Dropout层, Dropout(0.2) fif_dropout Dropout(0.5) # 14.输出层输出节点个数5, 激活函数softmax output_layer Dense(5) model Sequential([conv_layer1, max_pool1, conv_layer2, max_pool2,conv_layer3, max_pool3, conv_layer4, max_pool4,flatten_layer, third_dropout, hidden_layer1,hidden_layer3, fif_dropout, output_layer]) 2.模型编译 # 模型编译2分类binary_crossentropy model.compile(optimizeroptimizers.Adam(lr1e-3),losslosses.CategoricalCrossentropy(from_logitsTrue),metrics[accuracy]) model.summary() # 模型统计# 回调机制 动态调整学习率 reduce ReduceLROnPlateau(monitorval_accuracy, # 设置监测的值为val_accuracypatience2, # 设置耐心容忍次数为2verbose1, #factor0.5, # 缩放学习率的值为0.5学习率将以lr lr*factor的形式被减少min_lr0.000001 # 学习率最小值0.000001) # 监控val_accuracy增加趋势# 生成器对象1: 归一化 gen ImageDataGenerator(rescale1 / 255.0) # 生成器对象2: 归一化 数据加强 gen1 ImageDataGenerator(rescale1 / 255.0,rotation_range5, # 图片随机旋转的角度5度width_shift_range0.1,height_shift_range0.1, # 水平和竖直方向随机移动0.1shear_range0.1, # 剪切变换的程度0.1zoom_range0.1, # 随机放大的程度0.1fill_modenearest) # 当需要进行像素填充时选择最近的像素进行填充 # 拼接训练和验证的两个路径 train_path os.path.join(sys.path[0], data, train) val_path os.path.join(sys.path[0], data, val) print(训练数据路径 , train_path) print(验证数据路径: , val_path) # 训练和验证的两个迭代器 train_iter gen1.flow_from_directory(train_path, # 训练train目录路径target_size(96, 96), # 目标图像大小统一尺寸96batch_size8, # 设置每次加载到内存的图像大小class_modecategorical, # 设置分类模型(默认one-hot编码)shuffleTrue) # 是否打乱 val_iter gen.flow_from_directory(val_path, # 测试val目录路径target_size(96, 96), # 目标图像大小统一尺寸96batch_size8, # 设置每次加载到内存的图像大小class_modecategorical, # 设置分类模型(默认one-hot编码)shuffleTrue) # 是否打乱 3.模型训练 # 模型的训练 model.fit result model.fit(train_iter, # 设置训练数据的迭代器epochs30, # 循环次数30次validation_dataval_iter, # 验证数据的迭代器callbacks[reduce], # 回调机制设置为reducevalidation_freq1) 4.模型保存 # 保存训练好的模型 model.save(my_bkm.h5)5.模型训练时的可视化 # 显示训练集和验证集的acc和loss曲线 acc result.history[accuracy] # 获取模型训练中的accuracy val_acc result.history[val_accuracy] # 获取模型训练中的val_accuracy loss result.history[loss] # 获取模型训练中的loss val_loss result.history[val_loss] # 获取模型训练中的val_loss # 绘值acc曲线 plt.figure(1) plt.plot(acc, labelTraining Accuracy) plt.plot(val_acc, labelValidation Accuracy) plt.title(Training and Validation Accuracy) plt.legend() plt.savefig(my_bkm_acc.png, dpi600) # 绘制loss曲线 plt.figure(2) plt.plot(loss, labelTraining Loss) plt.plot(val_loss, labelValidation Loss) plt.title(Training and Validation Loss) plt.legend() plt.savefig(my_bkm_loss.png, dpi600) plt.show() # 将结果显示出来 5. 宝可梦的迁移学习 from tensorflow import keras from keras.models import Sequential from keras.layers import Dense, Conv2D, Flatten, Dropout, MaxPool2D, BatchNormalization from keras import optimizers, losses from keras.preprocessing.image import ImageDataGenerator import sys, os # 目录结构 import matplotlib.pyplot as plt from keras.callbacks import EarlyStopping, ReduceLROnPlateau1.模型建立 net keras.applications.DenseNet121(weightsimagenet, include_topFalse,poolingmax) # 这里使用了自带的DenseNet121网络 你也可以用keras.Sequential DIY模型 net.trainable False cnn_net keras.Sequential([net,Dense(1024, activationrelu),BatchNormalization(), # BN层 标准化数据Dropout(rate0.2),Dense(5)]) # 其要进行转换为array矩阵其实际格式是batchheightwidthC cnn_net.build(input_shape(None, 96, 96, 3)) cnn_net.summary()# 回调机制 reduce ReduceLROnPlateau(monitorval_accuracy, # 设置监测的值为val_accuracypatience2, # 设置耐心容忍次数为2verbose1, #factor0.5, # 缩放学习率的值为0.5学习率将以lr lr*factor的形式被减少min_lr0.000001 # 学习率最小值0.000001) # 监控val_accuracy增加趋势2.模型编译 cnn_net.compile(optimizeroptimizers.Adam(lr1e-3),losslosses.CategoricalCrossentropy(from_logitsTrue),metrics[accuracy]) # 生成器对象1: 归一化 gen ImageDataGenerator(rescale1 / 255.0) # 生成器对象2: 归一化 数据加强 gen1 ImageDataGenerator(rescale1 / 255.0,rotation_range5, # 图片随机旋转的角度5度width_shift_range0.1,height_shift_range0.1, # 水平和竖直方向随机移动0.1shear_range0.1, # 剪切变换的程度0.1zoom_range0.1, # 随机放大的程度0.1fill_modenearest) # 当需要进行像素填充时选择最近的像素进行填充 # 拼接训练和验证的两个路径 train_path os.path.join(sys.path[0], data, train) val_path os.path.join(sys.path[0], data, val) print(训练数据路径 , train_path) print(验证数据路径: , val_path) # 训练和验证的两个迭代器 train_iter gen1.flow_from_directory(train_path, # 训练train目录路径target_size(96, 96), # 目标图像大小统一尺寸96batch_size8, # 设置每次加载到内存的图像大小class_modecategorical, # 设置分类模型(默认one-hot编码)shuffleTrue) # 是否打乱 val_iter gen.flow_from_directory(val_path, # 测试val目录路径target_size(96, 96), # 目标图像大小统一尺寸96batch_size8, # 设置每次加载到内存的图像大小class_modecategorical, # 设置分类模型(默认one-hot编码)shuffleTrue) # 是否打乱 3.模型训练 # 模型的训练 model.fit result cnn_net.fit(train_iter, # 设置训练数据的迭代器epochs10, # 循环次数10次validation_dataval_iter, # 验证数据的迭代器callbacks[reduce], # 回调机制设置为reducevalidation_freq1) 4.模型保存 # 保存训练好的模型 cnn_net.save(my_bkm_2.h5)5.模型训练时的可视化 # 显示训练集和验证集的acc和loss曲线 acc result.history[accuracy] # 获取模型训练中的accuracy val_acc result.history[val_accuracy] # 获取模型训练中的val_accuracy loss result.history[loss] # 获取模型训练中的loss val_loss result.history[val_loss] # 获取模型训练中的val_loss # 绘值acc曲线 plt.figure(1) plt.plot(acc, labelTraining Accuracy) plt.plot(val_acc, labelValidation Accuracy) plt.title(Training and Validation Accuracy) plt.legend() plt.savefig(my_bkm_acc_2.png, dpi600) # 绘制loss曲线 plt.figure(2) plt.plot(loss, labelTraining Loss) plt.plot(val_loss, labelValidation Loss) plt.title(Training and Validation Loss) plt.legend() plt.savefig(my_bkm_loss_2.png, dpi600) plt.show() # 将结果显示出来
http://www.zqtcl.cn/news/902494/

相关文章:

  • 网站后台代码在哪修改网站如何做下一页
  • 网站开发职业要求百度推广代理商与总公司的区别
  • 西安网站建设中心网页 网 址网站区别
  • 技术支持东莞网站建设机械seo岗位是什么意思
  • 做商城网站需要备案什么域名硬件开发工具有哪些
  • 网络网站制作技巧wordpress全文
  • 韩国原生ip站群服务器左右悬停代码网站
  • 专门做广东11选5的网站网站 备案 营业执照
  • 免费扑克网站wordpress弹出服务协议窗口
  • 网站的反爬一般怎样做网站右键屏蔽
  • 茂名做网站dyiee青岛宣传片制作公司
  • 凡科网可以自己做网站吗编程常用网站
  • 做网站练手项目公司营业执照可以做几个网站
  • 聚通达网站建设网站并发要求
  • 网站建设预算申请如何写服装店网页设计素材
  • 做网站设计的公司柳州芜湖又出现一例
  • 重庆网站网站建设东莞市网站建设公司哪家好
  • php做网站如何架构wordpress 排版
  • wordpress免费网站模板下载地址在北京注册公司需要多少钱
  • 做的网站打不开高端网站名字
  • 个人网站建设报告西安网站开发高端网站开发
  • “网站建设:上海珍岛”网站备案信息查询系统
  • 北京哪个公司做网站专业建站培训
  • 郑州知名网站推广网站管理设置
  • 建设工程网站资质人员查询常州模板网站建设价格
  • 自己建网站做app手机网站列表页源码
  • 企业网站模板seo网站建设关键词优化
  • 平面毕业设计作品网站推广普通话ppt
  • p2p网站开发思路方案免费建简单网站
  • 微信朋友圈的网站连接怎么做互联网工程有限公司