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

漯河网站建设漯河珠海手机网站建设推广公司

漯河网站建设漯河,珠海手机网站建设推广公司,有网址和关键词就能刷网站排名,平谷网站建设模型工作流程 模型由许多层链接在一起组成,并将输入数据映射为预测值。随后,损失函数将这些预测值与目标值进行比较,得到一个损失值,用于衡量模型预测值与预期结果之间的匹配程度。优化器将利用这个损失值来更新模型权重。 下面是…

模型工作流程

模型由许多链接在一起组成,并将输入数据映射为预测值。随后,损失函数将这些预测值与目标值进行比较,得到一个损失值,用于衡量模型预测值与预期结果之间的匹配程度。优化器将利用这个损失值来更新模型权重

在这里插入图片描述

下面是输入数据。

(train_images, train_labels), (test_images, test_labels) = mnist.load_data()
train_images = train_images.reshape((60000, 28 * 28))
train_images = train_images.astype("float32") / 255
test_images = test_images.reshape((10000, 28 * 28))
test_images = test_images.astype("float32") / 255

输入图像保存在float32类型的NumPy张量中,其形状分别为(60000,784)(训练数据)和(10000, 784)(测试数据)​。
下面是模型。

model = keras.Sequential([layers.Dense(512, activation="relu"),layers.Dense(10, activation="softmax")
])

这个模型包含两个链接在一起的Dense层,每层都对输入数据做一些简单的张量运算,这些运算都涉及权重张量。权重张量是该层的属性,里面保存了模型所学到的知识。
下面是模型编译。

model.compile(optimizer="rmsprop",loss="sparse_categorical_crossentropy",metrics=["accuracy"])

sparse_categorical_crossentropy是损失函数,是用于学习权重张量的反馈信号,在训练过程中应使其最小化。降低损失值是通过小批量随机梯度下降来实现的。梯度下降的具体方法由第一个参数给定,即rmsprop优化器。

下面是训练循环。

model.fit(train_images, train_labels, epochs=5, batch_size=128)

在调用fit时:模型开始在**训练数据(共60000个样本)**上进行迭代(每个小批量包含128个样本)​,共迭代5轮[在所有训练数据上迭代一次叫作一轮(epoch)]。对于每批数据,模型会计算损失相对于权重的梯度(利用反向传播算法,这一算法源自微积分的链式法则)​,并将权重沿着减小该批量对应损失值的方向移动。5轮之后,模型共执行2345次梯度更新(每轮469次)​,模型损失值将变得足够小,使得模型能够以很高的精度对手写数字进行分类。

用TensorFlow从头开始重新实现模型

简单的Dense类

Dense层实现了下列输入变换,其中W和b是模型参数,activation是一个逐元素的函数(通常是relu,但最后一层是softmax)​。

output = activation(dot(W, input) + b)

我们实现一个简单的Python类NaiveDense,它创建了两个TensorFlow变量W和b,并定义了一个__call__()方法供外部调用,以实现上述变换。

import tensorflow as tfclass NaiveDense:#构造函数def __init__(self, input_size, output_size, activation):#模拟keras的dense层可以设置激活函数self.activation = activationw_shape = (input_size, output_size)#创建一个形状为(input_size, output_size)的矩阵W,并将其随机初始化w_initial_value = tf.random.uniform(w_shape, minval=0, maxval=1e-1)self.W = tf.Variable(w_initial_value)b_shape = (output_size,)#创建一个形状为(output_size,)的零向量bb_initial_value = tf.zeros(b_shape)self.b = tf.Variable(b_initial_value)#前向传播def __call__(self, inputs):return self.activation(tf.matmul(inputs, self.W) + self.b)#获取该层权重的便捷方法@propertydef weights(self):#以列表的形式返回本层的权重return [self.W, self.b]

我们总结一下NaiveDense实现了哪些步骤:
1.根据输入输出的形状初始化权重(kernel和bias)以实现仿射变换
2.初始化激活函数
3.实现前向传播函数(反向传播可以通过tensorflow的梯度带实现)
4.提供获取权重的方式

简单的Sequential类

我们创建一个NaiveSequential类来实现模型,将这些层链接起来。它封装了一个层列表(正如我们前面提到的模型由一系列层构成),并定义了一个__call__()方法供外部调用。这个方法将按顺序调用输入的层。它还有一个weights属性,用于记录所有层的权重。

class NaiveSequential:def __init__(self, layers):self.layers = layersdef __call__(self, inputs):x = inputsfor layer in self.layers:x = layer(x)return x@propertydef weights(self):weights = []for layer in self.layers:weights += layer.weightsreturn weights

按照惯例,总结一下这个Sequential实现了哪些行为:
1.封装层列表
2.一次调用层列表中的层进行前向传播

实例化模型

利用NaiveSequential来实例化模型

model = NaiveSequential([NaiveDense(input_size=28 * 28, output_size=512, activation=tf.nn.relu),NaiveDense(input_size=512, output_size=10, activation=tf.nn.softmax)
])
assert len(model.weights) == 4

批量生成器(batch)

对MNIST数据进行小批量迭代。

import mathclass BatchGenerator:def __init__(self, images, labels, batch_size=128):assert len(images) == len(labels)self.index = 0self.images = imagesself.labels = labelsself.batch_size = batch_sizeself.num_batches = math.ceil(len(images) / batch_size)def next(self):images = self.images[self.index : self.index + self.batch_size]labels = self.labels[self.index : self.index + self.batch_size]self.index += self.batch_sizereturn images, labels

批量生成器很简单,就是将训练数据保存下来,每次迭代产生批量大小的数据。

本文所有的代码汇总如下:

import tensorflow as tfclass NaiveDense:#构造函数def __init__(self, input_size, output_size, activation):#模拟keras的dense层可以设置激活函数self.activation = activationw_shape = (input_size, output_size)#创建一个形状为(input_size, output_size)的矩阵W,并将其随机初始化w_initial_value = tf.random.uniform(w_shape, minval=0, maxval=1e-1)self.W = tf.Variable(w_initial_value)b_shape = (output_size,)#创建一个形状为(output_size,)的零向量bb_initial_value = tf.zeros(b_shape)self.b = tf.Variable(b_initial_value)#前向传播def __call__(self, inputs):return self.activation(tf.matmul(inputs, self.W) + self.b)#获取该层权重的便捷方法@propertydef weights(self):#以列表的形式返回本层的权重return [self.W, self.b]class NaiveSequential:def __init__(self, layers):self.layers = layersdef __call__(self, inputs):x = inputsfor layer in self.layers:x = layer(x)return x@propertydef weights(self):weights = []for layer in self.layers:weights += layer.weightsreturn weightsmodel = NaiveSequential([NaiveDense(input_size=28 * 28, output_size=512, activation=tf.nn.relu),NaiveDense(input_size=512, output_size=10, activation=tf.nn.softmax)
])
assert len(model.weights) == 4import mathclass BatchGenerator:def __init__(self, images, labels, batch_size=128):assert len(images) == len(labels)self.index = 0self.images = imagesself.labels = labelsself.batch_size = batch_sizeself.num_batches = math.ceil(len(images) / batch_size)def next(self):images = self.images[self.index : self.index + self.batch_size]labels = self.labels[self.index : self.index + self.batch_size]self.index += self.batch_sizereturn images, labels

文章转载自:

http://6nVie8NI.bLqsr.cn
http://3fl8IsUr.bLqsr.cn
http://mDDISY1Q.bLqsr.cn
http://XOD2MKhN.bLqsr.cn
http://VtImlCbf.bLqsr.cn
http://sBNkggQc.bLqsr.cn
http://c8L3ZC7U.bLqsr.cn
http://iSYVZt1z.bLqsr.cn
http://b63XlLaq.bLqsr.cn
http://7TG6WhSt.bLqsr.cn
http://QUZiRd4X.bLqsr.cn
http://uvz3pUh3.bLqsr.cn
http://uvs8AXDd.bLqsr.cn
http://0W8KWOV5.bLqsr.cn
http://8ZvLJiDX.bLqsr.cn
http://YBXYtiff.bLqsr.cn
http://G2p09lFR.bLqsr.cn
http://1BsLSNbZ.bLqsr.cn
http://Fv0YOx2w.bLqsr.cn
http://ISnbOEZ2.bLqsr.cn
http://qq59hPoE.bLqsr.cn
http://fsOE5chA.bLqsr.cn
http://KWbajve2.bLqsr.cn
http://5iOHe0yO.bLqsr.cn
http://8BBv22zu.bLqsr.cn
http://O0DR5ytU.bLqsr.cn
http://UUUyL8PC.bLqsr.cn
http://ufUck6DK.bLqsr.cn
http://vZBy3W7P.bLqsr.cn
http://IW3mkHZX.bLqsr.cn
http://www.dtcms.com/wzjs/686858.html

相关文章:

  • 东莞微信网站建设咨询企航互联提供天津网站建设
  • 上海网站建设公司推百度云电脑版网站入口
  • 我的世界做皮肤壁纸网站建设一网站要多少钱
  • 网站建设华科技公司wordpress 自动上传插件
  • 网站流量建设网站搭建设计 是什么意思
  • 做ui要上那些网站东莞广告公司东莞网站建设价格
  • 连云港北京网站建设法人变更在哪个网站做公示
  • 做网站业务员怎么查找客户网站首页布局有哪些
  • 合肥企业建站系统模板app开发公司需要投资多少
  • 算命网站建设美食网站的建设
  • 黄石建设信息网站成都装修公司招聘
  • 村级门户网站建设南通网站排名
  • 码云可以做博客网站吗学院网站设计方案
  • 北京丰台区做网站公司汕头做网站公司
  • word如何做网站做电商网站一般多少钱
  • 陆川建设局网站网站建设中的接口
  • 东明县网站建设怎样做网站搜索推广
  • 废品网站怎么做一个公司网站备案吗
  • 无锡微信网站开发wordpress中文语言包
  • 网站建设运营费计入什么科目给漫画网站做推广
  • 网站开发文档怎么写seo 网站结构
  • 深圳宝安区住房和建设局网站怎样将qq空间建设为个人网站
  • h5网站建站关闭微信小程序入口
  • 北京网站建设代理无锡网站制作楚天软件
  • 网站改版 优势网站视频怎么下载到本地
  • 网站统计代码添加猪八戒网站做推广怎么样
  • 镇江做网站要多少钱哪个网站做h5好用
  • 深圳网页制作与网站建设方案维护seo官网制作规划
  • 网站如何做图片自动切换公司网站怎么在百度上做推广
  • 做venn图的网站建设网站哪个模板网站