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

联想服务器怎么建设第二个网站广州网页搜索排名提升

联想服务器怎么建设第二个网站,广州网页搜索排名提升,网站开发工程师,企业网站的制作用到的技术本节内容#xff1a; 前两节使用 Tensorflow2 的原生代码大叫神经网络。本节使用 keras 搭建神经网络#xff08;八股#xff1a;六步法#xff0c;有 Sequential 和 class 两种#xff09;。 文章目录一、搭建网络八股 sequential1.1、keras 介绍1.2、六步法搭建 keras …本节内容 前两节使用 Tensorflow2 的原生代码大叫神经网络。本节使用 keras 搭建神经网络八股六步法有 Sequential 和 class 两种。 文章目录一、搭建网络八股 sequential1.1、keras 介绍1.2、六步法搭建 keras 神经网络1.3、函数用法1.3.1、Sequential() 函数1.3.2、compile() 函数1.3.3、fit() 函数1.3.4、model.summary()1.4、鸢尾花分类代码复现二、类 class 搭建神经网络三、MNIST 手写数字识别数据集3.1、使用 Sequential 搭建神经网络3.2、使用 clas 搭建神经网络四、FASHION 衣裤识别数据集及训练一、搭建网络八股 sequential 1.1、keras 介绍 tf.keras 是 Tensorflow2 引入的高封装度框架可以用于快速搭建神经网络模型。 keras 官方文档https://keras.io/zh/ 两种学习 API 的方法 1在 PyCharm 集成开发环境中查看框架源码将鼠标放置在函数上按住 Ctrl 键会显示函数的基本信息包括封装函数的类、函数入口参数函数功能等等。2在 Tensorflow 官网中查询函数文档通过左边的检索寻找目标函数。如查询 model.fit() 函数打开 tf.keras 中的 Model 类右方目录列出了 Model 类所包含的函数点击 fit() 函数可以看到对于函数的介绍包括输入参数具体介绍、函数功能等等。 1.2、六步法搭建 keras 神经网络 1import 相关模块。如 import tensorflow as tf 。 2指定输入网络的训练集 train 和测试集 test如指定训练集的输入 x_train 和标签 y_train以及测试集的输入 x_test 和标签 y_test。 3逐层搭建网络结构相当于走了一边前向传播 models.Sequential。 model tf.keras.models.Sequential()# 另外一种方法class MyModel class MyModel(Model): def __init__(self): super(MyModel, self).__init__() 初始化网络结构搭建出神经网络所需的各种网络结构块def call(self, x): 调用网络结构块实现前向传播return y model MyModel()4在 compile() 中配置训练方法选择训练时使用的优化器、损失函数和评价指标。 model.compile()5在 model.fit() 中执行训练过程告知训练集和测试集的输入值和标签、每个 batch 的大小 batch_size、数据集的迭代次数 epoch。 model.fit()6打印网络结构统计参数数目。 model.summary()1.3、函数用法 1.3.1、Sequential() 函数 Sequential() 可以认为是一个容器这个容器里面封装了一个神经网络结构。在 Sequential() 函数中要描述从输入层到输出层的每一层的网络结构每一层的网络结构可以是拉直层 Flatten() 或者全连接层 Dense()。 # 描述各层网络 model tf.keras.model.Sequential([网络结构])网络结构举例 拉直层这一层不含计算只是形状转换把输入特征拉直变成一维数组可以变换张量的尺寸。 tf.keras.layers.Flatten()全连接层又叫 Dense 层。 # 其中激活函数 activation 用字符串给出可选用relu、softmax、sigmoid、tanh # kernel_regularizer 可选用tf.keras.regularizers.l1()、tf.keras.regularizers.l2() tf.keras.layers.Dense(神经元个数activation 激活函数kernel_regularizer 哪种正则化 )卷积层卷积神经网络 tf.keras.layers.Conv2D(filters卷积核个数kernel_size卷积核尺寸strides卷积步长padding valid or same)LSTM 层循环神经网络 tf.keras.layers.LSTM()1.3.2、compile() 函数 用于配置神经网络的训练方法告知训练时使用的优化器、损失函数和准确率评测标准。 model.compile(optimizer优化器loss损失函数metrics[准确率])1optimizer 可以是以字符串形式给出的优化器名字比如 sgd、adagrad、adadelta、adam。也可以是函数形式使用函数形式可以设置学习率、动量等超参数。建议入门时先使用左边字符串形式的优化器名字等掌握了整个框架后可通过TensorFlow官网查询这些函数的具体用法调节超参数。 https://tensorflow.google.cn/api_docs/python/tf/keras/optimizers/experimental/SGD ‘sgd’ or tf.keras.optimizers.SGD(lr学习率,decay学习率衰减率,momentum动量参数)‘adagrad’ or tf.keras.optimizers.Adagrad(lr学习率,decay学习率衰减率)‘adadelta’ or tf.keras.optimizers.Adadelta(lr学习率,decay学习率衰减率)‘adam’ or tf.keras.optimizers.Adam (lr学习率,beta_10.9,beta_20.999)2loss 可以是字符串给出的损失函数名字如mse、spare_categorical_crossentropy。也可以是函数形式。 ‘mse’ or tf.keras.losses.MeanSquaredError() ‘sparse_categorical_crossentropy or tf.keras.losses.SparseCategoricalCrossentropy(from_logitsFalse) # from_logits 是否是原始输出即未经过概率分布的输出损失函数常需要经过 softmax 函数将输出转化为概率分布的形式。from_logits 用来标注该损失函数是否需要转换为概率的形式取 False 表示转化为概率分布取 True 表示没有转化为概率分布直接输出。 3Metrics 告知网络评测指标。 # y_是标签y是网络输出结果 ‘accuracy’ y_和y都是数值如y_[1] y[1] ‘categorical_accuracy’ y_和y都是独热码(概率分布)如y_[0,1,0] y[0.256,0.695,0.048] ‘sparse_categorical_accuracy’ y_是数值y是独热码(概率分布)如y_[1] y[0.256,0.695,0.048]1.3.3、fit() 函数 fit() 函数执行训练过程。 model.fit (训练集的输入特征, 训练集的标签, batch_size , # 每次喂入神经网络的样本数epochs , # 要迭代多少次数据集# 以下函数 validation_data 和 validation_split 二选一validation_data(测试集的输入特征测试集的标签),validation_split从训练集划分多少比例给测试集validation_freq 多少次epoch测试一次 # 每多少次 epoch 迭代使用测试集验证一次结果)1.3.4、model.summary() summary() 可以打印出网络的结构和参数统计。 1.4、鸢尾花分类代码复现 # 1首先 import 相关模块 import tensorflow as tf from sklearn import datasets import numpy as np# train、test 分别交代训练集中的输入特征 x_train 和训练集的标签 y_train # 测试集的输入特征 x_test 和测试集的标签 y_test 也可以像 x_train 和 y_train 一样直接在这里给定也可以在 fit 中按比例从训练集中划分 x_train datasets.load_iris().data y_train datasets.load_iris().target# 以下 5 行代码实现数据集的乱序 np.random.seed(116) np.random.shuffle(x_train) np.random.seed(116) np.random.shuffle(y_train) tf.random.set_seed(116)# 在 sequential 中搭建网络结构神经元个数、激活函数、正则化方法 model tf.keras.models.Sequential([tf.keras.layers.Dense(3, activationsoftmax, kernel_regularizertf.keras.regularizers.l2()) ])# 在 compile 中配置训练方法选择 SGD 优化器学习率设置为 0.1、选择损失函数、由于神经网络末端使用了 softmax 函数使得输出是概率分布而不是原始输出所以 from_logits 是 false # 由于鸢尾花数据集给的标签是 0 1 2是数值。神经网络前向传播的输出是概率分布所以这里选择 sparse_categorical_accuracy 作为评测指标。 model.compile(optimizertf.keras.optimizers.SGD(lr0.1),losstf.keras.losses.SparseCategoricalCrossentropy(from_logitsFalse),metrics[sparse_categorical_accuracy])# 在 fit 中执行训练过程训练集输入特征、训练集标签、训练时一次喂入神经网络多少组数据 batch_size、数据集迭代循环的次数、validation_split 告知从训练集中选择 20% 的数据作为测试集、validation_freq 表示每迭代 20 次训练集要在测试集中验证一次准确率。 model.fit(x_train, y_train, batch_size32, epochs500, validation_split0.2, validation_freq20)# 用 summary 打印网络结构和参数统计 model.summary()iris 数据集输入是 4 个特征是三分类问题这里test是用 validation_split0.2 划分的法1在model.fit中按比例从训练集中划分就不用写x_test和y_test了 ![在这里插入图片描述](https://img-blog.csdnimg.cn/fe3e6fe4e26f4f28a161ee04a4c8ad6b.png) 法2也可以像 x_train 和 y_train 一样直接给定 以上是测试集 test 的两种划分方式。 二、类 class 搭建神经网络 使用 Sequential 可以搭建出上层输出就是下层输入的顺序网络结构但是无法写出一些带有跳连的非顺序网络结构此时可以选择用类 class 搭建神经网络结构可以使用 class 类搭建一个神经网络结构。 class MyModel(Model): # MyModel为声明的神经网络的名字括号中的Model表示创建的类需要继承TensorFlow库中的Model类 # 类中需要定义两个函数def __init__(self): # 类的构造函数用于初始化类的参数super(MyModel, self).__init__() # 初始化父类的参数初始化网络结构搭建出神经网络所需的各种网络结构块def call(self, x): #调用__init__()函数完成初始化的网络块实现前向传播并返回推理值调用网络结构块实现前向传播return ymodel MyModel()可以认为 init 函数准备出搭建网络所需的各种积木call 函数调用 init 中搭建好的积木实现前向传播。 使用 class 方式搭建 iris 网络结构 class IrisModel(Model):def __init__(self):super(IrisModel, self).__init__()# 在__init__函数中定义了要在call函数中调用的具有三个神经元的全连接网络Denseself.d1 Dense(3, activationsoftmax, kernel_regularizertf.keras.regularizers.l2()) # d1是给这一层起的名字每一层都用self.引导def call(self, x):y self.d1(x) # 在call函数中调用self.d1实现了从输入x输出y的前向传播return y # 对于鸢尾花的例子前向传播只经过一层网络这层网络结构快已经在 __init__ 函数中定义好了直接 self.d1 调用输入 x 输出 y返回 y搭建好网络结构后只需要使用 Model MyModel() 构建类的对象就可以使用该模型了。 model IrisModel() # 实例化完整代码如下 import tensorflow as tf from tensorflow.keras.layers import Dense # 添加 model 模块 from tensorflow.keras import Model from sklearn import datasets import numpy as npx_train datasets.load_iris().data y_train datasets.load_iris().targetnp.random.seed(116) np.random.shuffle(x_train) np.random.seed(116) np.random.shuffle(y_train) tf.random.set_seed(116)# 定义了 IrisModel 类 class IrisModel(Model):def __init__(self):super(IrisModel, self).__init__()# 具有三个神经元的全连接网络 Denseself.d1 Dense(3, activationsoftmax, kernel_regularizertf.keras.regularizers.l2())def call(self, x):# 在 call 函数中调用了 self.d1 实现了输入 x 到输出 y 的前向传播y self.d1(x)return y# 实例化 model model IrisModel()model.compile(optimizertf.keras.optimizers.SGD(lr0.1),losstf.keras.losses.SparseCategoricalCrossentropy(from_logitsFalse),metrics[sparse_categorical_accuracy])model.fit(x_train, y_train, batch_size32, epochs500, validation_split0.2, validation_freq20) model.summary()三、MNIST 手写数字识别数据集 数据集介绍MNIST 数据集一共有 7 万张图片都是 28 * 28 像素点的手写数字图片。其中 6 万张用于训练1 万张用于测试。 import tensorflow as tf from matplotlib import pyplot as plt# 导入数据集 mnist tf.keras.datasets.mnist # keras 函数库提供了使用 mnist 数据集的接口 # x_train 是训练集输入特征y_train 是训练集标签x_test 是测试集输入特征y_test 是测试集标签 (x_train, y_train), (x_test, y_test) mnist.load_data() # load_data() 直接从 mnist 中读取测试集和训练集# 送入神经网络时要把数据拉直成一维数组把 784 个像素点的灰度值作为输入特征送入神经网络 tf.keras.layers.Flatten()# 可视化训练集输入特征的第一个元素 # 以下两句话把训练集中的第一个样本 x_train[0] 可视化出来 plt.imshow(x_train[0], cmapgray) # 绘制灰度图 plt.show()以上代码生成如下 import tensorflow as tf from matplotlib import pyplot as plt# 导入 MNIST 数据集 mnist tf.keras.datasets.mnist (x_train, y_train), (x_test, y_test) mnist.load_data()# 可视化训练集输入特征的第一个元素 plt.imshow(x_train[0], cmapgray) # 绘制灰度图 plt.show()# 打印出训练集中第一个样本的输入特征 print(x_train[0]:\n, x_train[0]) # 打印出训练集中第一个样本的标签 print(y_train[0]:\n, y_train[0])# 打印出整个训练集输入特征形状 print(x_train.shape:\n, x_train.shape) # 打印出整个训练集标签的形状 print(y_train.shape:\n, y_train.shape) # 打印出整个测试集输入特征的形状 print(x_test.shape:\n, x_test.shape) # 打印出整个测试集标签的形状 print(y_test.shape:\n, y_test.shape)3.1、使用 Sequential 搭建神经网络 import tensorflow as tfmnist tf.keras.datasets.mnist (x_train, y_train), (x_test, y_test) mnist.load_data() # 对输入网络的输入特征进行归一化使原来 0 到 255 之间的灰度值变为 0 到 1之间的数值 # 把输入特征的数值变小更适合神经网络的吸收 x_train, x_test x_train / 255.0, x_test / 255.0# 用 sequential 搭建神经网络 model tf.keras.models.Sequential([tf.keras.layers.Flatten(), # 先把输入特征拉直为一维数组也就是拉直为 748 个数值tf.keras.layers.Dense(128, activationrelu), # 定义第一层网络有 128 个神经元用 relu 激活函数tf.keras.layers.Dense(10, activationsoftmax) # 定义第二层网络有 10 个神经元用 softmax 函数使输出符合概率分布 ])# 用 compile 配置训练方法 model.compile(optimizeradam, # 优化器选择 admalosstf.keras.losses.SparseCategoricalCrossentropy(from_logitsFalse), # 损失函数选择 SparseCategoricalCrossentropymetrics[sparse_categorical_accuracy]) # 数据集中的标签是数值神经网络输出 y 是概率分布所以这里选择 sparse_categorical_accuracy# fit 中执行训练过程参数依次为训练集输入特征、训练集标签、每次喂入网络 32 组数据、数据集迭代 5 次、【测试集输入特征、测试集标签】、每迭代一次训练集执行一次测试集的评测 model.fit(x_train, y_train, batch_size32, epochs5, validation_data(x_test, y_test), validation_freq1)# 打印出网络结构和参数统计 model.summary()# 我们所说的准确率是使用测试集计算出的准确率也就是看的这里val_sparse_categorical_accuracy: 0.9787执行结果说明 1MNIST 数据集有 60000 张图片用来训练batch_size32所以每轮要迭代 60000/321875次共迭代 5 轮即 5 epochs。2训练时每个 step 给出的是训练集 accuracy不具有参考价值。有实际评判价值的是 validation_freq 中设置的、隔若干轮输出的测试集 accuracy。 3.2、使用 clas 搭建神经网络 import tensorflow as tf from tensorflow.keras.layers import Dense, Flatten from tensorflow.keras import Modelmnist tf.keras.datasets.mnist (x_train, y_train), (x_test, y_test) mnist.load_data() x_train, x_test x_train / 255.0, x_test / 255.0# 与 sequential 搭建神经相比只有实例化 model 的方法不同 class MnistModel(Model):# __init__ 函数中定义了 call 函数中所用到的层def __init__(self):super(MnistModel, self).__init__()self.flatten Flatten()self.d1 Dense(128, activationrelu)self.d2 Dense(10, activationsoftmax)# cell 函数中从输入 x 到输出 y走过一次前向传播返会输出 ydef call(self, x):x self.flatten(x)x self.d1(x)y self.d2(x)return y# 实例化 model其余代码和 Sequential 实现手写数字识别模型训练的代码是完全一样的 model MnistModel()model.compile(optimizeradam,losstf.keras.losses.SparseCategoricalCrossentropy(from_logitsFalse),metrics[sparse_categorical_accuracy])model.fit(x_train, y_train, batch_size32, epochs5, validation_data(x_test, y_test), validation_freq1) model.summary()# 随着训练集迭代轮数的增加手写数字识别准确率不断提高四、FASHION 衣裤识别数据集及训练 Fashion_mnist 数据集与 MNIST 数据集几乎一样一共有 7w 张图片每张图片都是 28 行 28 列像素点的灰度值数据。其中 6w 张用于训练和1w 张用于测试图片被分为十类如T恤、裤子、套头衫等等每张图片为28×28的分辨率像素点的灰度值数据。 **训练衣服、裤子等图片的识别模型**与训练MNIST数据集的不同之处就是加载数据集的代码不同在此不再赘述。 fashion tf.keras.datasets.fashion_mnist (x_train, y_train),(x_test, y_test) fashion.load_data() # 可以使用.load_data()直接从fashion数据集中读取训练集和测试集最后识别准确率为 87.50%。
http://www.hkea.cn/news/14572487/

相关文章:

  • 微网站和小程序的区别亚洲网站正在建设中
  • 建设网站要多久到账vultr安装WordPress目录
  • 网站有什么组成网站建设方案详解
  • 网站怎样秒收录网站建设公司谁管
  • 河南微网站开发亚马逊雨林电影
  • 自己创业网站开发公司的网址格式
  • 天商阳光网站邮箱北京最近的新闻大事
  • 扫码进入网站 怎么做建设网站翻译英文翻译
  • 跨境电商自建站平台深圳网站开发哪家好
  • 常设中国建设工程法律论坛网站2022百度seo最新规则
  • 网站建设与管理 自考广西城乡住房建设厅网站
  • app开发科技网站建设h5响应式网站建设代理
  • 域名注册好了怎么样做网站杭州模板网站制作方案
  • 网站平台如何推广缪斯国际设计公司官网
  • 做像百姓网这样网站多少钱网站域名组成
  • 网站开发通过什么途径接活自己设计手机的网站
  • 金耀网站建设网站制作wordpress模板文件编辑插件
  • 肇庆建设局网站wordpress优化加速缓存中国
  • 1号网站建设 高端网站建设wordpress 金融主题
  • 让客户留住更长时间访问你的网站长沙旅游景点大全排名
  • 俄罗斯做电商网站微信小程序平台官网
  • 南宁seo公司百度seo关键词排名优化工具
  • 现在建设网站落后了北京网站优化校学费
  • 云南建设厅网站工程师网站建设如何做
  • 手机网站的网址是什么原因浙江省建设厅网站高工
  • 网站建设公司哪家最好一般网站开发好的框架都有哪些
  • 网站建站之后需要维护吗投票小程序制作
  • 肇庆网站制作企业手机网站哪些功能
  • 青岛做网站哪家优化好wordpress文章导入公众号
  • 免费小说网站怎么做哪个公司做视频网站