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

网站建设专家公司排行网站举报有奖平台

网站建设专家公司排行,网站举报有奖平台,c asp做网站,wordpress标签页面跳转#x1f368; 本文为#x1f517;365天深度学习训练营 中的学习记录博客#x1f356; 原作者#xff1a;K同学啊 文章目录 一、前期工作1.设置GPU#xff08;如果使用的是CPU可以忽略这步#xff09;2. 导入数据3. 查看数据 二、数据预处理1、加载数据2、数据可视化3、再… 本文为365天深度学习训练营 中的学习记录博客 原作者K同学啊 文章目录 一、前期工作1.设置GPU如果使用的是CPU可以忽略这步2. 导入数据3. 查看数据 二、数据预处理1、加载数据2、数据可视化3、再次检查数据4、配置数据集 三、构建CNN网络四、训练模型1、设置动态学习率2、早停与保存最佳模型参数3、模型训练 五、模型评估1、Loss与Accuracy图2、尝试更改initial_learning_rate0.0013、指定图片预测 六、总结 电脑环境 语言环境Python 3.8.0 编译器Jupyter Notebook 深度学习环境tensorflow 2.15.0 一、前期工作 1.设置GPU如果使用的是CPU可以忽略这步 from tensorflow import keras from keras import layers, models import os, PIL, pathlib import matplotlib.pyplot as plt import tensorflow as tfgpus tf.config.list_physical_devices(GPU)if gpus:gpu0 gpus[0] #如果有多个GPU仅使用第0个GPUtf.config.experimental.set_memory_growth(gpu0, True) #设置GPU显存用量按需使用tf.config.set_visible_devices([gpu0],GPU)2. 导入数据 data_dir ./data/ data_dir pathlib.Path(data_dir)3. 查看数据 image_count len(list(data_dir.glob(*/*/*.jpg))) print(图片总数为,image_count)输出图片总数为 578 打开一张图片 Monkeypox list(data_dir.glob(train/nike/*.jpg)) PIL.Image.open(str(Monkeypox[1]))二、数据预处理 1、加载数据 使用image_dataset_from_directory方法将磁盘中的数据加载到tf.data.Dataset中。 batch_size 32 img_height 224 img_width 224train_ds tf.keras.preprocessing.image_dataset_from_directory(./data/train/,seed123,image_size(img_height, img_width),batch_sizebatch_size)val_ds tf.keras.preprocessing.image_dataset_from_directory(./data/test/,seed123,image_size(img_height, img_width),batch_sizebatch_size)我们可以通过class_names输出数据集的标签。标签将按字母顺序对应于目录名称。 class_names train_ds.class_names print(class_names)输出 [‘adidas’, ‘nike’] 2、数据可视化 plt.figure(figsize(20, 10))for images, labels in train_ds.take(1):for i in range(20):ax plt.subplot(5, 10, i 1)plt.imshow(images[i].numpy().astype(uint8))plt.title(class_names[labels[i]])plt.axis(off)3、再次检查数据 for image_batch, labels_batch in train_ds:print(image_batch.shape)print(labels_batch.shape)break输出 (32, 224, 224, 3) (32,) 4、配置数据集 AUTOTUNE tf.data.AUTOTUNE train_ds train_ds.cache().shuffle(1000).prefetch(buffer_sizeAUTOTUNE) val_ds val_ds.cache().prefetch(buffer_sizeAUTOTUNE)三、构建CNN网络 关于卷积核的计算不懂的可以参考文章https://blog.csdn.net/qq_38251616/article/details/114278995layers.Dropout(0.4) 作用是防止过拟合提高模型的泛化能力。 关于Dropout层的更多介绍可以参考文章https://mtyjkh.blog.csdn.net/article/details/115826689 model models.Sequential([layers.experimental.preprocessing.Rescaling(1./255, input_shape(img_height, img_width, 3)),layers.Conv2D(16, (3, 3), activationrelu, input_shape(img_height, img_width, 3)), # 卷积层1卷积核3*3 layers.AveragePooling2D((2, 2)), # 池化层12*2采样layers.Conv2D(32, (3, 3), activationrelu), # 卷积层2卷积核3*3layers.AveragePooling2D((2, 2)), # 池化层22*2采样layers.Dropout(0.3), layers.Conv2D(64, (3, 3), activationrelu), # 卷积层3卷积核3*3layers.Dropout(0.3), layers.Flatten(), # Flatten层连接卷积层与全连接层layers.Dense(128, activationrelu), # 全连接层特征进一步提取layers.Dense(len(class_names)) # 输出层输出预期结果 ])model.summary() # 打印网络结构四、训练模型 1、设置动态学习率 ExponentialDecay函数 tf.keras.optimizers.schedules.ExponentialDecay是 TensorFlow 中的一个学习率衰减策略用于在训练神经网络时动态地降低学习率。学习率衰减是一种常用的技巧可以帮助优化算法更有效地收敛到全局最小值从而提高模型的性能。 主要参数 initial_learning_rate初始学习率初始学习率大小。decay_steps衰减步数学习率衰减的步数。在经过 decay_steps 步后学习率将按照指数函数衰减。例如如果 decay_steps 设置为 10则每10步衰减一次。decay_rate衰减率学习率的衰减率。它决定了学习率如何衰减。通常取值在 0 到 1 之间。staircase阶梯式衰减一个布尔值控制学习率的衰减方式。如果设置为 True则学习率在每个 decay_steps 步之后直接减小形成阶梯状下降。如果设置为 False则学习率将连续衰减。 # 设置初始学习率 initial_learning_rate 0.1lr_schedule tf.keras.optimizers.schedules.ExponentialDecay(initial_learning_rate, decay_steps10, # 敲黑板这里是指 steps不是指epochsdecay_rate0.92, # lr经过一次衰减就会变成 decay_rate*lrstaircaseTrue)# 将指数衰减学习率送入优化器 optimizer tf.keras.optimizers.Adam(learning_ratelr_schedule)model.compile(optimizeroptimizer,losstf.keras.losses.SparseCategoricalCrossentropy(from_logitsTrue),metrics[accuracy])注这里设置的动态学习率为指数衰减型ExponentialDecay。在每一个epoch开始前学习率learning_rate都将会重置为初始学习率initial_learning_rate然后再重新开始衰减。计算公式如下 learning_rate initial_learning_rate * decay_rate ^ (step / decay_steps) 2、早停与保存最佳模型参数 EarlyStopping()参数说明 monitor: 被监测的数据。min_delta: 在被监测的数据中被认为是提升的最小变化 例如小于 min_delta 的绝对变化会被认为没有提升。patience: 没有进步的训练轮数在这之后训练就会被停止。verbose: 详细信息模式。mode: {auto, min, max} 其中之一。 在 min 模式中 当被监测的数据停止下降训练就会停止在 max 模式中当被监测的数据停止上升训练就会停止在 auto 模式中方向会自动从被监测的数据的名字中判断出来。baseline: 要监控的数量的基准值。 如果模型没有显示基准的改善训练将停止。estore_best_weights: 是否从具有监测数量的最佳值的时期恢复模型权重。 如果为 False则使用在训练的最后一步获得的模型权重。 from tensorflow.keras.callbacks import ModelCheckpoint, EarlyStoppingepochs 50# 保存最佳模型参数 checkpointer ModelCheckpoint(best_model.h5,monitorval_accuracy,verbose1,save_best_onlyTrue,save_weights_onlyTrue)# 设置早停 earlystopper EarlyStopping(monitorval_accuracy, min_delta0.001,patience20, verbose1)3、模型训练 history model.fit(train_ds,validation_dataval_ds,epochsepochs,callbacks[checkpointer, earlystopper])Epoch 1/50 15/16 [..] - ETA: 0s - loss: 0.7137 - accuracy: 0.5021 Epoch 1: val_accuracy improved from -inf to 0.50000, saving model to best_model.h5 16/16 [] - 3s 73ms/step - loss: 0.7141 - accuracy: 0.4920 - val_loss: 0.6969 - val_accuracy: 0.5000 Epoch 2/50 15/16 [..] - ETA: 0s - loss: 0.6964 - accuracy: 0.4681 Epoch 2: val_accuracy did not improve from 0.50000 16/16 [] - 1s 42ms/step - loss: 0.6967 - accuracy: 0.4602 - val_loss: 0.6935 - val_accuracy: 0.5000 。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。 16/16 [] - 1s 45ms/step - loss: 0.6936 - accuracy: 0.5000 - val_loss: 0.6932 - val_accuracy: 0.5000 Epoch 21/50 15/16 [..] - ETA: 0s - loss: 0.6957 - accuracy: 0.4532 Epoch 21: val_accuracy did not improve from 0.50000 16/16 [] - 1s 44ms/step - loss: 0.6955 - accuracy: 0.4562 - val_loss: 0.6935 - val_accuracy: 0.5000 Epoch 21: early stopping从输出结果看到val_accuracy一直0.5000那么肯定是哪里不对了。 五、模型评估 1、Loss与Accuracy图 acc history.history[accuracy] val_acc history.history[val_accuracy]loss history.history[loss] val_loss history.history[val_loss]epochs_range range(len(loss))plt.figure(figsize(12, 4)) plt.subplot(1, 2, 1) plt.plot(epochs_range, acc, labelTraining Accuracy) plt.plot(epochs_range, val_acc, labelValidation Accuracy) plt.legend(loclower right) plt.title(Training and Validation Accuracy)plt.subplot(1, 2, 2) plt.plot(epochs_range, loss, labelTraining Loss) plt.plot(epochs_range, val_loss, labelValidation Loss) plt.legend(locupper right) plt.title(Training and Validation Loss) plt.show()2、尝试更改initial_learning_rate0.001 再次训练输出结果为 Epoch 1/50 16/16 [] - ETA: 0s - loss: 5.3369 - accuracy: 0.4940 Epoch 1: val_accuracy improved from -inf to 0.52632, saving model to best_model.h5 16/16 [] - 128s 1s/step - loss: 5.3369 - accuracy: 0.4940 - val_loss: 0.6984 - val_accuracy: 0.5263 Epoch 2/50 15/16 [..] - ETA: 0s - loss: 0.6932 - accuracy: 0.5021 Epoch 2: val_accuracy improved from 0.52632 to 0.61842, saving model to best_model.h5 16/16 [] - 1s 65ms/step - loss: 0.6924 - accuracy: 0.5080 - val_loss: 0.6893 - val_accuracy: 0.6184 。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。 Epoch 43/50 15/16 [..] - ETA: 0s - loss: 0.1565 - accuracy: 0.9596 Epoch 43: val_accuracy did not improve from 0.85526 16/16 [] - 1s 45ms/step - loss: 0.1579 - accuracy: 0.9582 - val_loss: 0.4551 - val_accuracy: 0.8421 Epoch 43: early stopping这里看到减小了initial_learning_rate后效果好了很多。 3、指定图片预测 # 加载效果最好的模型权重 model.load_weights(best_model.h5)from PIL import Image import numpy as npimg Image.open(./data/test/nike/1.jpg) #这里选择你需要预测的图片 image tf.image.resize(img, [img_height, img_width])# expand_dims函数在索引axis处增加一个值为1的维度这里使得image变成一个一张图片的一个批次 img_array tf.expand_dims(image, 0) #/255.0 # 记得做归一化处理与训练集处理方式保持一致predictions model.predict(img_array) # 这里选用你已经训练好的模型 print(预测结果为,class_names[np.argmax(predictions)])输出 1/1 [] - 0s 422ms/step 预测结果为 nike预测正确。 六、总结 学习到tensorflow中的动态学习率函数ExponentialDecay模型的初始学习率不能设置过大过大的学习率可能导致模型不收敛且模型精度太差当然也不能太小太小模型收敛慢难跳出局部最优。学习到使模型因没有改善早结束训练函数EarlyStopping
http://www.w-s-a.com/news/848655/

相关文章:

  • 程序员不是做网站的公司装修效果全景图
  • 桥东区住房和建设局网站怎么做网上问卷
  • 做期货要看哪些网站伪装的福祉 wordpress
  • 做网站需要多少费用网站建设需要懂什么语言
  • 网站手机端做app开发商城设计方案
  • 在建设厅网站上查询注销建造师查域名是否注册
  • 企业网站推广方案策划公司网站在国外打开很慢使用cdn好还是国外租用服务器好
  • 龙华o2o网站建设百度不收录什么网站吗
  • 模板搭建网站百度信息流推广
  • 移动端网站制作模板自己做的网站点击赚钱
  • 网站站长如何赚钱wordpress抓取别人网站
  • 做网站媒体专门做产品定制的网站
  • 公司企业网站建设步骤免费asp网站模板
  • 台州企业网站搭建价格做留言的网站
  • 西安网站建设q.479185700強高端网站设计定制公司
  • 网站设计是平面设计吗音频文件放到网站空间里生成链接怎么做
  • seo是对网站进行什么优化可以在哪些网站做翻译兼职
  • 南宁seo网站推广服务网站建设客户分析
  • 网站属于什么公司甜品售卖网站网页设计
  • 如何在宝塔中安装wordpressseo1888网站建设
  • 网站系统cms湖南平台网站建设制作
  • 美团网站怎么做未备案网站加速
  • 通用cms网站wordpress可以商用
  • 阳江网络问政平台 周报济南seo公司案例
  • 重庆聚百思网站开发网络市场调研
  • seo工具共享网站敬请期待的英语
  • 最好看免费观看高清大全中国移动网络优化做什么的
  • 网站开发的步骤医院网站建设细节
  • 阿雷网站建设wordpress lucene
  • seo做多个网站建筑公司企业标语