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

上海网站备案号查询各类企业网站案例

上海网站备案号查询,各类企业网站案例,怎么自己免费做网站,做乡镇网站目录 前言 一、前期工作 1.1 设置GPU 1.2 导入数据 输出 二、数据预处理 2.1 加载数据 2.2 再次检查数据 2.3 配置数据集 2.4 可视化数据 三、构建VGG-16网络 3.1 VGG-16网络介绍 3.2 搭建VGG-16模型 四、编译 五、训练模型 六、模型评估 七、预测 总结 前言…目录 前言 一、前期工作 1.1 设置GPU 1.2 导入数据 输出 二、数据预处理 2.1 加载数据 2.2 再次检查数据 2.3 配置数据集 2.4 可视化数据 三、构建VGG-16网络 3.1 VGG-16网络介绍 3.2 搭建VGG-16模型 四、编译 五、训练模型 六、模型评估 七、预测 总结 前言 本文为中的学习记录博客 原作者 说在前面 1本周任务了解model.train_on_batch()并运用了解tqdm并使用tqdm实现可视化进度条 2运行环境Python3.6、Pycharm2020、tensorflow2.4.0 一、前期工作 1.1 设置GPU 代码如下 import os os.environ[CUDA_VISIBLE_DEVICES]0 os.environ[TF_CPP_MIN_LOG_LEVEL]3 # 忽略 Error #隐藏警告 import warnings warnings.filterwarnings(ignore) # 1.1 设置GPU import tensorflow as tf gpus tf.config.list_physical_devices(GPU) if gpus:tf.config.experimental.set_memory_growth(gpus[0], True) #设置GPU显存用量按需使用tf.config.set_visible_devices([gpus[0]],GPU) # 打印显卡信息确认GPU可用 print(gpus) 输出[PhysicalDevice(name/physical_device:GPU:0, device_typeGPU)] ⚠️⚠️⚠️前期我没有使用GPU就采用的CPU训练速度很慢虽然安装了tensorflow-gpu但还是用的CPU因为我的cudnn和cudatoolkit之前没配置成功然后我补充安装。这里出线会打印很多关于gpu调用的日志信息会很影响我们对训练过程和打印信息的关注度这里我在import tensorflow之前先通过下面的设置来控制打印的内容 import os os.environ[CUDA_VISIBLE_DEVICES]0 os.environ[TF_CPP_MIN_LOG_LEVEL]3  TF_CPP_MIN_LOG_LEVEL 取值 0 0也是默认值输出所有信息 TF_CPP_MIN_LOG_LEVEL 取值 1 屏蔽通知信息 TF_CPP_MIN_LOG_LEVEL 取值 2 屏蔽通知信息和警告信息 TF_CPP_MIN_LOG_LEVEL 取值 3 屏蔽通知信息、警告信息和报错信息                  参考自https://blog.csdn.net/xiaoqiaoliushuiCC/article/details/124435241 1.2 导入数据 代码如下 # 1.2 导入数据 import matplotlib.pyplot as plt # 支持中文 plt.rcParams[font.sans-serif] [SimHei] # 用来正常显示中文标签 plt.rcParams[axes.unicode_minus] False # 用来正常显示负号 import os,PIL,pathlib data_dir ./data data_dir pathlib.Path(data_dir) image_count len(list(data_dir.glob(*/*))) print(图片总数为,image_count) 输出 图片总数为  3400 二、数据预处理 2.1 加载数据 使用image_dataset_from_directory方法将磁盘中的数据加载到tf.data.Datasettf.keras.preprocessing.image_dataset_from_directory()是 TensorFlow 的 Keras 模块中的一个函数用于从目录中创建一个图像数据集dataset。这个函数可以以更方便的方式加载图像数据用于训练和评估神经网络模型 测试集与验证集的关系 验证集并没有参与训练过程梯度下降过程的狭义上来讲是没有参与模型的参数训练更新的。但是广义上来讲验证集存在的意义确实参与了一个“人工调参”的过程我们根据每一个epoch训练之后模型在valid data上的表现来决定是否需要训练进行early stop或者根据这个过程模型的性能变化来调整模型的超参数如学习率batch_size等等。因此我们也可以认为验证集也参与了训练但是并没有使得模型去overfit验证集因此我们也可以认为验证集也参与了训练但是并没有使得模型去overfit验证集 代码如下 # 二、数据预处理 # 2.1 加载数据 batch_size 8 img_height 224 img_width 224 train_ds tf.keras.preprocessing.image_dataset_from_directory(data_dir,validation_split0.2,subsettraining,seed12,image_size(img_height, img_width),batch_sizebatch_size) val_ds tf.keras.preprocessing.image_dataset_from_directory(data_dir,validation_split0.2,subsetvalidation,seed12,image_size(img_height, img_width),batch_sizebatch_size) class_names train_ds.class_names print(class_names) 输出如下 [cat, dog] 2.2 再次检查数据 代码如下 # 2.2 再次检查数据 for image_batch, labels_batch in train_ds:print(image_batch.shape)print(labels_batch.shape)break 输出 (8, 224, 224, 3) (8,) 2.3 配置数据集 代码如下 # 2.3 配置数据集 AUTOTUNE tf.data.AUTOTUNEdef preprocess_image(image,label):return (image/255.0,label) # 归一化处理 train_ds train_ds.map(preprocess_image, num_parallel_callsAUTOTUNE) val_ds val_ds.map(preprocess_image, num_parallel_callsAUTOTUNE) train_ds train_ds.cache().shuffle(1000).prefetch(buffer_sizeAUTOTUNE) val_ds val_ds.cache().prefetch(buffer_sizeAUTOTUNE)2.4 可视化数据 代码如下 plt.figure(figsize(15, 10)) # 图形的宽为15高为10 for images, labels in train_ds.take(1):for i in range(8):ax plt.subplot(5, 8, i 1)plt.imshow(images[i])plt.title(class_names[labels[i]])plt.axis(off) 输出 三、构建VGG-16网络 3.1 VGG-16网络介绍 结构说明 13个卷积层Convolutional Layer分别用blockX_convX表示3个全连接层Fully connected Layer分别用fcX与predictions表示5个池化层Pool layer分别用blockX_pool表示 网络结构图如下包含了16个隐藏层--13个卷积层和3个全连接层故称为VGG-16 ​​​ ​ 3.2 搭建VGG-16模型 代码如下 # 三、构建VGG-16网络 from tensorflow.keras import layers, models, Input from tensorflow.keras.models import Model from tensorflow.keras.layers import Conv2D, MaxPooling2D, Dense, Flatten, Dropoutdef VGG16(nb_classes, input_shape):input_tensor Input(shapeinput_shape)# 1st blockx Conv2D(64, (3,3), activationrelu, paddingsame,nameblock1_conv1)(input_tensor)x Conv2D(64, (3,3), activationrelu, paddingsame,nameblock1_conv2)(x)x MaxPooling2D((2,2), strides(2,2), name block1_pool)(x)# 2nd blockx Conv2D(128, (3,3), activationrelu, paddingsame,nameblock2_conv1)(x)x Conv2D(128, (3,3), activationrelu, paddingsame,nameblock2_conv2)(x)x MaxPooling2D((2,2), strides(2,2), name block2_pool)(x)# 3rd blockx Conv2D(256, (3,3), activationrelu, paddingsame,nameblock3_conv1)(x)x Conv2D(256, (3,3), activationrelu, paddingsame,nameblock3_conv2)(x)x Conv2D(256, (3,3), activationrelu, paddingsame,nameblock3_conv3)(x)x MaxPooling2D((2,2), strides(2,2), name block3_pool)(x)# 4th blockx Conv2D(512, (3,3), activationrelu, paddingsame,nameblock4_conv1)(x)x Conv2D(512, (3,3), activationrelu, paddingsame,nameblock4_conv2)(x)x Conv2D(512, (3,3), activationrelu, paddingsame,nameblock4_conv3)(x)x MaxPooling2D((2,2), strides(2,2), name block4_pool)(x)# 5th blockx Conv2D(512, (3,3), activationrelu, paddingsame,nameblock5_conv1)(x)x Conv2D(512, (3,3), activationrelu, paddingsame,nameblock5_conv2)(x)x Conv2D(512, (3,3), activationrelu, paddingsame,nameblock5_conv3)(x)x MaxPooling2D((2,2), strides(2,2), name block5_pool)(x)# full connectionx Flatten()(x)x Dense(4096, activationrelu, namefc1)(x)x Dense(4096, activationrelu, namefc2)(x)output_tensor Dense(nb_classes, activationsoftmax, namepredictions)(x)model Model(input_tensor, output_tensor)return modelmodelVGG16(1000, (img_width, img_height, 3)) model.summary() 模型结构打印如下 ​Model: model _________________________________________________________________ Layer (type)                 Output Shape              Param #    input_1 (InputLayer)         [(None, 224, 224, 3)]     0          _________________________________________________________________ block1_conv1 (Conv2D)        (None, 224, 224, 64)      1792       _________________________________________________________________ block1_conv2 (Conv2D)        (None, 224, 224, 64)      36928      _________________________________________________________________ block1_pool (MaxPooling2D)   (None, 112, 112, 64)      0          _________________________________________________________________ block2_conv1 (Conv2D)        (None, 112, 112, 128)     73856      _________________________________________________________________ block2_conv2 (Conv2D)        (None, 112, 112, 128)     147584     _________________________________________________________________ block2_pool (MaxPooling2D)   (None, 56, 56, 128)       0          _________________________________________________________________ block3_conv1 (Conv2D)        (None, 56, 56, 256)       295168     _________________________________________________________________ block3_conv2 (Conv2D)        (None, 56, 56, 256)       590080     _________________________________________________________________ block3_conv3 (Conv2D)        (None, 56, 56, 256)       590080     _________________________________________________________________ block3_pool (MaxPooling2D)   (None, 28, 28, 256)       0          _________________________________________________________________ block4_conv1 (Conv2D)        (None, 28, 28, 512)       1180160    _________________________________________________________________ block4_conv2 (Conv2D)        (None, 28, 28, 512)       2359808    _________________________________________________________________ block4_conv3 (Conv2D)        (None, 28, 28, 512)       2359808    _________________________________________________________________ block4_pool (MaxPooling2D)   (None, 14, 14, 512)       0          _________________________________________________________________ block5_conv1 (Conv2D)        (None, 14, 14, 512)       2359808    _________________________________________________________________ block5_conv2 (Conv2D)        (None, 14, 14, 512)       2359808    _________________________________________________________________ block5_conv3 (Conv2D)        (None, 14, 14, 512)       2359808    _________________________________________________________________ block5_pool (MaxPooling2D)   (None, 7, 7, 512)         0          _________________________________________________________________ flatten (Flatten)            (None, 25088)             0          _________________________________________________________________ fc1 (Dense)                  (None, 4096)              102764544  _________________________________________________________________ fc2 (Dense)                  (None, 4096)              16781312   _________________________________________________________________ predictions (Dense)          (None, 1000)              4097000    Total params: 138,357,544 Trainable params: 138,357,544 Non-trainable params: 0 四、编译 代码如下 model.compile(optimizeradam,losssparse_categorical_crossentropy,metrics[accuracy]) 五、训练模型 代码如下 # 五、训练模型 from tqdm import tqdm import tensorflow.keras.backend as Kepochs 10 lr 1e-4# 记录训练数据方便后面的分析 history_train_loss [] history_train_accuracy [] history_val_loss [] history_val_accuracy [] for epoch in range(epochs):train_total len(train_ds)val_total len(val_ds)with tqdm(totaltrain_total, descfEpoch {epoch 1}/{epochs}, mininterval1, ncols100) as pbar:lr lr * 0.92K.set_value(model.optimizer.lr, lr)for image, label in train_ds:history model.train_on_batch(image, label)train_loss history[0]train_accuracy history[1]pbar.set_postfix({loss: %.4f % train_loss,accuracy: %.4f % train_accuracy,lr: K.get_value(model.optimizer.lr)})pbar.update(1)history_train_loss.append(train_loss)history_train_accuracy.append(train_accuracy)print(开始验证)with tqdm(totalval_total, descfEpoch {epoch 1}/{epochs}, mininterval0.3, ncols100) as pbar:for image, label in val_ds:history model.test_on_batch(image, label)val_loss history[0]val_accuracy history[1]pbar.set_postfix({loss: %.4f % val_loss,accuracy: %.4f % val_accuracy})pbar.update(1)history_val_loss.append(val_loss)history_val_accuracy.append(val_accuracy)print(结束验证)print(验证loss为%.4f % val_loss)print(验证准确率为%.4f % val_accuracy) 打印训练过程 ​ 六、模型评估 代码如下 epochs_range range(epochs) plt.figure(figsize(12, 4)) plt.subplot(1, 2, 1)plt.plot(epochs_range, history_train_accuracy, labelTraining Accuracy) plt.plot(epochs_range, history_val_accuracy, labelValidation Accuracy) plt.legend(loclower right) plt.title(Training and Validation Accuracy)plt.subplot(1, 2, 2) plt.plot(epochs_range, history_train_loss, labelTraining Loss) plt.plot(epochs_range, history_val_loss, labelValidation Loss) plt.legend(locupper right) plt.title(Training and Validation Loss) plt.show() 训练结果可视化如下 ​​​ 七、预测 代码如下 # 七、预测 import numpy as np # 采用加载的模型new_model来看预测结果 plt.figure(figsize(18, 3)) # 图形的宽为18高为5 plt.suptitle(预测结果展示) for images, labels in val_ds.take(1):for i in range(8):ax plt.subplot(1, 8, i 1)# 显示图片plt.imshow(images[i].numpy())# 需要给图片增加一个维度img_array tf.expand_dims(images[i], 0)# 使用模型预测图片中的人物predictions model.predict(img_array)plt.title(class_names[np.argmax(predictions)])plt.axis(off)输出 1/1 [] - 0s 129ms/step 1/1 [] - 0s 19ms/step 1/1 [] - 0s 18ms/step 1/1 [] - 0s 18ms/step 1/1 [] - 0s 17ms/step 1/1 [] - 0s 18ms/step 1/1 [] - 0s 17ms/step 1/1 [] - 0s 17ms/step 总结 Tensorflow训练过程中打印多余信息的处理并且引入了进度条的显示方式更加方便及时查看模型训练过程中的情况可以及时打印各项指标修改了以往的model.fit()训练方法改用model.train_on_batch方法。两种方法的比较model.fit()用起来十分简单对新手非常友好model.train_on_batch()封装程度更低可以玩更多花样完成了VGG-16基于Tensorflow下的搭建、训练等工作对比分析了pytorch和tensorflow两个框架下实现同种任务的异同完成VGG-16对猫狗图片的高精度识别
http://www.hkea.cn/news/14293516/

相关文章:

  • 网站如何做微信推广方案微商怎么做网站
  • 2017做网站还赚钱吗优化问题
  • 一级a做片性视频.网站在线观看做网站六安
  • 建设项目验收网站app大全
  • 广东网站建设专业公司排名外卖网站建设的策划
  • 在什么网站上做精帖郴州网站推广公司排名
  • 计算机的网站建设南昌百度推广联系方式
  • 生鲜电商网站建设策划书应用商店下载安装正版
  • 做废铝的关注哪个网站好深圳城建局
  • 微信网站有什么作用wordpress首页文章随机显示
  • 企业网站的建设哪家比较好网站排名怎么弄
  • 免费网站免费领地自适应网站设计稿
  • 珠海建站模板源码wordpress资源类主题
  • 公司网站设网站改版 html
  • 我想做卖鱼苗网站怎样做管家婆软件多少钱一年
  • 创建一个网站多少钱学校二级网站建设自查情况
  • 网站建设和网站搭建哪个好英文网站怎么做301跳转
  • 网站建设营销模板网页传奇合击
  • 个人电脑做网站主机平面设计主要用的软件
  • 网站可信图标dede页码的调用 网站
  • 域名出售网站做网站和做程序一样吗
  • 门户网站意思电子商务公司开发网站
  • 网站运维合同wordpress宠物
  • 灯饰网站建设哪家便宜php网站开发学什么
  • 自己怎么做网站购买空间平台推广怎么做
  • 专门做奢侈品的网站有哪些建设银行属于哪里
  • php做手机网站网站建设为大学生服务
  • 设计研发网站沈阳建设网站公司
  • 福州网站制作设计app拉新推广代理
  • 一个新的网站怎么做优化网站内链接怎么做