TensorFlow——CNN实现MNIST手写体识别
文章目录
- TensorFlowCNN实现MNIST
- 1 数据集
- 2 回归模型——Softmax
- 3 卷积神经网络 Convolutional Neural Network - CNN
- 3.1 概念
- 3.1.1 卷积 Convolution
- 3.1.2 池化 Pooling
- 4 网络结构
- 5 代码实现
- 5.1 函数定义
- 5.1.1 权重初始化
- 5.1.2 偏置量初始化
- 5.1.3 卷积函数
- 5.1.4 池化函数
- 5.2 各层定义
- 5.2.1 Input layer 输入层
- 5.2.2 Convolutional layer 1 卷积层1
- 5.2.3 Pooling layer 1 池化层1
- 5.2.4 Convolutional layer 2 卷积层2
- 5.2.5 Pooling layer 2 池化层2
- 5.2.6 Fully-connected layer 密集连接层
- 5.2.7 dropout
- 5.2.8 Softmax
- 5.2.9 training and evaluating 训练和评估
- 6 实验结果
TensorFlowCNN实现MNIST
官方文档 —— MNIST 入门 | Softmax 相关
官方文档 —— MNIST 进阶 | CNN 相关
CNN-卷积神经网络相关
1 数据集
MNIST是一个入门级的计算机视觉数据集,它包含各种手写数字图片:
这份Python代码是官方网站上提供给我们下载和安装数据集的,然后可以使用下面的代码导入到你的项目里面:
import input_data
mnist = input_data.read_data-sets("MNIST_data/", one_hot=True)
下载下来是一个60000行的训练数据集(mnist.train)和一个10000行的测试数据集(mnist.test)。
数据集的每个数据单元包含:
- 一张手写数字的图片(28x28=784)
- 对应的标签[1x10]
在训练数据集中,mnsit.train.images
是一个形状为[60000, 784]的一个张量,第一个维度是图片索引也就是样本序号,第二个维度是图片像素点,也就是相对于每张28x28=784的图片转换为一个1x784的向量来处理,总共是60000x784。
2 回归模型——Softmax
我们针对每个数字,给出每个数字对应的28x28=784个像素不同的权值,与这个数字相关程度较大的像素,我们给予相对更高的权重(正值),反之给予较低的权重(负值),如下图所示,红色为负值,蓝色为正值,黑色表示我们对这部分像素不关心:
对每一张图片,根据相应的数字 所对应的每个像素的权重,求出乘积和在加上一个偏置量(因为输入往往会有干扰),得到一个证据值,它描述的是我们能够认为这张图片是对应数字 的把握的大小:
然而,事实上这个把握只是一个值,我们更希望得到的是这张图片关于 每个数字介于 到 之间的概率分布。我们通过softmax这个激励函数把这个证据量转化为对应数字 一个概率值 :
可以这样定义函数softmax:
右边具体展开如下:
即,假如神经网络的原始输出为 ,那么,我们对其中的每一项都代入上面的式子进行回归,最终将原本神经网络前向传播得到的结果最终转化成为一个概率分布,这样我们就可以通过这个概率分布来判断,输入的图片和最有可能是哪一个数字。我们可以使用下图来表示一个softmax回归模型:
写成等式如下:
用矩阵相乘的方法可以优化计算效率(例如,权重矩阵相乘再和输入层作运算可以减少运算量):
最终我们可以用下面表示,其中是输入向量,是偏置向量,是输出向量:
3 卷积神经网络 Convolutional Neural Network - CNN
下图展示了底层几乎一模一样的简单特征(如简单的线段,曲线,边缘等),通过组合成为各不相同的高级特征,最终组合成不同内容的图像:
卷积神经网络的目的就是:通过提取底层特征,接着根据较低层的特征识别出较为高级的特征,通过多层的特征提取,最终识别出图像的具体内容。
卷积神经网络的两个核心过程是:
- 卷积 Convolution
- 池化 Pooling
3.1 概念
3.1.1 卷积 Convolution
卷积操作如下图所示:
用于卷积的模板是我们所关注的特征,我们认为局部的的像素块可以描述这样的特征,我们通过用这个特征作为模板对图像进行卷积操作,来得到图像局部位置和特征的相关性,得到的结果如上图所示,就是一个卷积特征矩阵。一般会针对多个特征设计多个卷积模板,例如下面的24个特征对应的模板:
3.1.2 池化 Pooling
池化过程如下:
事实上,可以看到,所谓的池化就是一个下采样(subsampling)的过程,将卷积特征图像下采样为池化特征图像。
由于卷积过程中卷积核相对于图像来说过小,所以卷积得到的图像结果依然非常大,所以我们希望进行一个下采样来减少数据的维度,并且降低过拟合。
这是基于特征的统计特性依然能够很好的描述图像的特征这一特点,使得我们可以通过提取特征的统计特性来减少数据维度,常用的有:
- 平均值下采样
- 最大值下采样
4 网络结构
希望构建的CNN(Convolution Neural Network 卷积神经网络)结构如下:
- Input layer 输入层
- Convolutional layer 1 卷积层1
- Pooling layer 1 池化层1
- Convolutional layer 2 卷积层2
- Pooling layer 2 池化层2
- Fully-connected layer 密集连接层
5 代码实现
5.1 函数定义
接下来给出每一层的函数定义,首先定义权重和偏置量初始化函数。
5.1.1 权重初始化
# for weights intialization
def weight_variable(shape):initial = tf.truncated_normal(shape, stddev=0.1)return tf.Variable(initial)
tf.truncated_normal函数是在截断正态分布中随机选取一个值,其中shape是生成的张量的维度,stddev
是正态分布的标准差,mean
均值默认为
5.1.2 偏置量初始化
# for biases initialization
def bias_variable(shape):initial = tf.constant(0.1, shape=shape)return tf.Variable(initial)
这个模型中的权重在初始化时应该加入少量的噪声来打破对称性以及避免0梯度。由于我们使用的是ReLU神经元,因此比较好的做法是用一个较小的正数来初始化偏置项,以避免神经元节点输出恒为0的问题(dead neurons)。
接下来定义卷积函数和池化函数。
5.1.3 卷积函数
卷积过程关键在于:
- 边界处理
- 步长设置
我们定义了一个二维卷积函数:
def conv2d(x, W):return tf.nn.conv2d(x, W, strides=[1, 1, 1, 1], padding='SAME')
其中,为卷积图像,为卷积模板,另外两个参数决定了我们将怎样进行卷积:
- strides:这是一个四维的向量,但是决定我们水平和垂直移动模板的只是中间的两个参数,这里我们设置步长为1,即[1, 1, 1, 1]
- padding:这个参数决定了我们的补0方式,参数值为表示关于模板对称补0,也就是最终输出的结果大小将会和原图像一样大
这样我们保证了输出和输入的大小相同。
5.1.4 池化函数
池化我们采用简单的的池化模板进行最大值下采样(max pooling):
def max_pool_2x2(x):return tf.nn.max_pool(x, ksize=[1, 2, 2, 1],strides=[1, 2, 2, 1], padding='SAME')
参数strides:可以看到这里的四维向量步长为,即水平步长为2,垂直步长也为2,也就是每个值保留其中最大值,实现了下采样。
5.2 各层定义
5.2.1 Input layer 输入层
我们从MNIST数据集中读入数据,并创建两个用于输入数据(图片数据和对应的标签数据)的结点:
import input_data
mnist = input_data.read_data_sets('MNIST_data', one_hot=True)# images data
x = tf.placeholder("float", shape=[None, 784])
# images labels
y_ = tf.placeholder("float", shape=[None, 10])
这里 和 不是两个变量,而是定义为两个占位符,这是为了方便让我们可以输入不同数量的图片,采用占位符设置第一维为 ,允许输入的张量的第一维为任意大小。
我们采用随机采样 个训练样本进行训练,后面我们使用 表示本次训练批次中样本的数量。
5.2.2 Convolutional layer 1 卷积层1
进入第一层的卷积操作。
首先,定义两个变量:
W_conv1
:第一层卷积的权重,前两个是模板大小参数,第三个参数是输入的通道数,最后一个参数是输出的通道数。通过这个的模板对的图像进行卷积计算出个特征值,即,我们用个模板对每一张图片进行卷积得到这张图片对应这个特征的特征值
b_conv1
:第一层卷积的偏置量,每一个输出通道对应一个偏置量
# first layer's weights and biases
W_conv1 = weight_variable([5, 5, 1, 32])
b_conv1 = bias_variable([32])
为了在这一层进行卷积操作,对输入层的数据进行:
# reshape from 784x1 to 28x28
x_image = tf.reshape(x, [-1,28,28,1])
得到的x_image
是一个4维的向量:
- 第1维为-1,表示自动得到这一维的大小,也就是我们这一批随机样本的个数
- 第2,3维为宽和高,即手写数字图像的大小
- 第4维为通道数,我们这里是灰度图像,所以通道数量为1,如果为RGB图像,通道数量为3
调用函数conv2d
进行卷积操作,然后加上偏置向量,应用ReLU
激励函数:
# Convolutional 1
h_conv1 = tf.nn.relu(conv2d(x_image, W_conv1) + b_conv1)
最终我们得到的输入到输出的转换结果为:
即这张图片对应的个特征图像
5.2.3 Pooling layer 1 池化层1
接下来进入第一层的池化操作,对第一层卷积层得到的卷积结果进行max_pooling
:
# Pooling 1
# subsample from 28x28 to 14x14
h_pool1 = max_pool_2x2(h_conv1)
得到降维后的结果h_pool1
,此时宽和高从变为了:
5.2.4 Convolutional layer 2 卷积层2
定义第二层卷积层的权重和偏置量:
W_conv2
:在这一层中我们同样采用的模板进行卷积,但是这里输入的通道数是上一层输出的通道数量,即个特征值,输出为64个更高级的特征
# second layer's weights and biases
W_conv2 = weight_variable([5, 5, 32, 64])
b_conv2 = bias_variable([64])
我们可以结合神经网络的知识来理解:
在下一层的隐藏层中有64个神经元,这一层的32个神经元对下一层的每一个神经元都有 一个输入,并且对应有一个权重(实际上对于图像处理,在二维空间里,这里是一个卷积模板),并且这一层的每个神经元对于下一层的每个神经元的输入权重是不同的(通常来说)。
对于下一层的神经元的输出,将会是上一层的每个神经元的输入和对应权重的乘积和,在这里是对应的卷积结果得到的图像相加,下一层隐藏层第 个神经元的输出写成:
其中是对应上一层第 个神经元的卷积模板, 为第 个神经元到这个神经元的输入,再结合激励函数:
最终进行卷积运算的代码如下,事实上只是改变了输入权重和偏置量:
# Convolutional 2
h_conv2 = tf.nn.relu(conv2d(h_pool1, W_conv2) + b_conv2)
这一层卷积得到的输入到输出的转换为:
5.2.5 Pooling layer 2 池化层2
同样我们采用简单的的池化模板进行最大值下采样(max pooling):
# Pooling 2
# subsample from 14x14 to 7x7
h_pool2 = max_pool_2x2(h_conv2)
这一层输入到输出的转换为:
5.2.6 Fully-connected layer 密集连接层
到这里,图片尺寸已经缩小到了 ,我们加入一个有 个神经元的密集连接层来处理整张图片。
# Fully connected
W_fc1 = weight_variable([7 * 7 * 64, 1024])
b_fc1 = bias_variable([1024])
可以看到,密集连接层的权重第一个维度的大小和第二个池化层神经元输出结果的大小相同,这样我们接下来对池化层的结果进行 的话:
h_pool2_flat = tf.reshape(h_pool2, [-1, 7*7*64])
再进行矩阵乘法:
h_fc1 = tf.nn.relu(tf.matmul(h_pool2_flat, W_fc1) + b_fc1)
最终我们将会把每张图片提纯成一个的向量,最终实现的转换为:
这样高度提纯的特征可以方便我们后面进行分类回归
5.2.7 dropout
dropout的思想是,让一些神经元以某个概率 随机将激活值置为 ,停止工作,如下图所示:
这样可以防止对某一个特征过度依赖,降低模型的过拟合程度,提高模型的泛化性。
下面的代码实现了 :
# dropout
keep_prob = tf.placeholder("float")
h_fc1_drop = tf.nn.dropout(h_fc1, keep_prob)
TensorFlow函数tf.nn.dropout
的作用为:
- 使得输入矩阵,如
h_fc1
,中的元素随机变为0,概率大概为输入参数keep_prob
- 其余的元素的值变为
element/keep_prob
变为 的输出相当于我们所丢弃掉的结点,这样在每次迭代完之后,都会更新我们的卷积神经网络,使得新的一部分结点在新的迭代中将会被 掉,由此就实现了 过程。
5.2.8 Softmax
最终根据前面密集连接层的 个神经元的输出和权重的乘积和得到对应 到 每个数字的证据量,然后通过tf.nn.softmax
函数转换为相应的概率分布:
# output with softmax regression
W_fc2 = weight_variable([1024, 10])
b_fc2 = bias_variable([10])y_conv=tf.nn.softmax(tf.matmul(h_fc1_drop, W_fc2) + b_fc2)
5.2.9 training and evaluating 训练和评估
我们需要定义一个指标来评价我们的模型质量,这样才能有助于我们训练模型,这个指标就是我们常说的成本(cost)或者是损失(loss),然后通过最小化这个指标来达到我们训练的目的。
我们通过一个成本函数——“交叉熵”(Cross Entropy)来判断一个模型的好坏:
其中, 是我们预测得到的概率分布,而是实际的概率分布,代码如下:
# get cross entropy
cross_entropy = -tf.reduce_sum(y_*tf.log(y_conv))
使用 优化器通过最小化交叉熵进行步长优化:
train_step = tf.train.AdamOptimizer(1e-4).minimize(cross_entropy)
解析来通过tf.equal
来比较我们的识别结果,argmax
将会得到概率最大值的标签,通过比较这两个标签,判断识别正确与否:
correct_prediction = tf.equal(tf.argmax(y_conv,1), tf.argmax(y_,1))
最终将会得到一组布尔值,然后通过下面的函数:
accuracy = tf.reduce_mean(tf.cast(correct_prediction, "float"))
将会把这一组布尔值转化为一组浮点数,例如:
然后取平均值将会得到我们最终想要的识别正确率,例如上面将会得到正确率为 。
最后,我们开始运行我们的模型:
sess.run(tf.initialize_all_variables())
# sess.run(tf.global_variables_initializer())
for i in range(20000):# 50一批batch = mnist.train.next_batch(50)# 每100次迭代输出日志if i%100 == 0:train_accuracy = accuracy.eval(feed_dict={x:batch[0], y_: batch[1], keep_prob: 1.0})print("step %d, training accuracy %g"%(i, train_accuracy))# 训练train_step.run(feed_dict={x: batch[0], y_: batch[1], keep_prob: 0.5})
# 输出最终得到的准确率
print("test accuracy %g"%accuracy.eval(feed_dict={x: mnist.test.images, y_: mnist.test.labels, keep_prob: 1.0}))
6 实验结果
完整代码如下:
import tensorflow as tf
import input_data# for weights intialization
def weight_variable(shape):initial = tf.truncated_normal(shape, stddev=0.1)return tf.Variable(initial)
# for biases initialization
def bias_variable(shape):initial = tf.constant(0.1, shape=shape)return tf.Variable(initial)# convolution
def conv2d(x, W):return tf.nn.conv2d(x, W, strides=[1, 1, 1, 1], padding='SAME')# pooling
def max_pool_2x2(x):return tf.nn.max_pool(x, ksize=[1, 2, 2, 1],strides=[1, 2, 2, 1], padding='SAME')# start graph
sess = tf.InteractiveSession()# read data
mnist = input_data.read_data_sets('MNIST_data', one_hot=True)# images data
x = tf.placeholder("float", shape=[None, 784])
# images labels
y_ = tf.placeholder("float", shape=[None, 10])# first layer's weights and biases
W_conv1 = weight_variable([5, 5, 1, 32])
b_conv1 = bias_variable([32])# reshape from 784x1 to 28x28
x_image = tf.reshape(x, [-1,28,28,1])# Convolutional 1
h_conv1 = tf.nn.relu(conv2d(x_image, W_conv1) + b_conv1)# Pooling 1
# subsample from 28x28 to 14x14
h_pool1 = max_pool_2x2(h_conv1)# second layer's weights and biases
W_conv2 = weight_variable([5, 5, 32, 64])
b_conv2 = bias_variable([64])# Convolutional 2
h_conv2 = tf.nn.relu(conv2d(h_pool1, W_conv2) + b_conv2)
# Pooling 2
# subsample from 14x14 to 7x7
h_pool2 = max_pool_2x2(h_conv2)# Fully connected
W_fc1 = weight_variable([7 * 7 * 64, 1024])
b_fc1 = bias_variable([1024])h_pool2_flat = tf.reshape(h_pool2, [-1, 7*7*64])
h_fc1 = tf.nn.relu(tf.matmul(h_pool2_flat, W_fc1) + b_fc1)# dropout
keep_prob = tf.placeholder("float")
h_fc1_drop = tf.nn.dropout(h_fc1, keep_prob)# output with softmax regression
W_fc2 = weight_variable([1024, 10])
b_fc2 = bias_variable([10])y_conv=tf.nn.softmax(tf.matmul(h_fc1_drop, W_fc2) + b_fc2)# training and evaluating
cross_entropy = -tf.reduce_sum(y_*tf.log(y_conv))
train_step = tf.train.AdamOptimizer(1e-4).minimize(cross_entropy)
correct_prediction = tf.equal(tf.argmax(y_conv,1), tf.argmax(y_,1))
accuracy = tf.reduce_mean(tf.cast(correct_prediction, "float"))
sess.run(tf.initialize_all_variables())
# sess.run(tf.global_variables_initializer())
for i in range(20000):# 50一批batch = mnist.train.next_batch(50)# 每100次迭代输出日志if i%100 == 0:train_accuracy = accuracy.eval(feed_dict={x:batch[0], y_: batch[1], keep_prob: 1.0})print("step %d, training accuracy %g"%(i, train_accuracy))# 训练train_step.run(feed_dict={x: batch[0], y_: batch[1], keep_prob: 0.5})
# 输出最终得到的准确率
print("test accuracy %g"%accuracy.eval(feed_dict={x: mnist.test.images, y_: mnist.test.labels, keep_prob: 1.0}))
结果:
这里截取前面几个日志(因为每100步输出一行日志所以总共有200行日志):
最终结果:
训练得到的模型识别正确率为
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- 一点资料:修改DLL文件
一、DLL文件常识 DLL是Dynamic Link Library的缩写,意为动态链接库。在Windows中, 许多应用程序并不是一个完整的可执行文件,它们被分割成一些相对独 立的动态链接库,即DLL文件,放置于系统中。当我们执行某一个程序 时,相应的DLL文件就会被调用。一个应用程序可有多个DLL…...
2024/4/16 18:26:17 - 使用JSP开发动态网站基础
1、 什么是动态网页? 动态网页是指在服务器端运行的程序或者网页,它们会随不同客户、不同时间,返回不同的网页。 注意:在静态网页中插入flash ,虽然flash是在动的,但是并不是说这个网页就是动态网页。参考动态网页的特点。 2、 动态网页的特点? (1)、交互性:即网页会…...
2024/4/19 20:33:02 - 软件测试、ios中的测试概念以及步骤
软件测试: 软件测试的目标是应该服务于软件项目的目标,可以通过建议反馈使用更加高效的方法和工具,提升软件开发效率以及软件开发质量。同时还可以通过过一些手段,更早、更快、更多地发现缺陷,从容降低了这些缺陷带来的风险。 软件测试是为了消除更加多的bug,虽然没有能够…...
2024/5/2 10:48:16 - 直播程序源码更简单的搭建方法
直播在度过2016你那的直播元年后即将攀登2017年的行业顶峰,搭建一款直播平台成为各企业亟不可待的事情,那么,如何利用直播程序源码更简单的搭建自己的直播平台呢? 首先,我们要了解直播平台都具有那些功能: 视频直播功能,这是一款直播App最主要的功能,要能支持视频直播R…...
2024/4/16 18:25:41 - jsp开发中的4个域对象
pageContext(page域): 生命周期:只在当前页面中有效,只在当前页面中有效的对象可以用 request(request域) 生命周期:请求结束后失效,请求使用完后,不再使用的 session(session域) 生命周期:会话结束后销毁,自己使用完了,待会自己还要用的 servletContext(application域…...
2024/4/16 18:25:41 - 一些比较好的资源下载,学习网站(希望大家能够评论进行补充)
1.下载音效http://sc.chinaz.com/yinxiao/2.RGB颜色查询对照表http://www.114la.com/other/rgb.htmhttp://tool.c7sky.com/webcolor/3.图片压缩https://tinypng.com/4.下载小图标比较方便的网站http://www.iconfont.cn/home/index?spm=a313x.7781069.1998910419.25.下载轮播滑…...
2024/4/20 19:36:14 - .exe文件和.dll文件之间的作用和关系!
DLL文件即动态链接库文件,是一种可执行文件,它允许程序共享执行特殊任务所必需的代码和其他资源。Windows提供的DLL文件中包含了允许基于Windows的程序在Windows环境下操作的许多函数和资源。 DLL多数情况下是带有DLL扩展名的文件,但也可能是EXE或其他扩展名。它们向运行于…...
2024/4/16 18:25:23 - 人脸检测源码解析——6、强分类器的诞生
下面的内容很长,倒杯水(有茶或者咖啡更好),带上耳机,准备就绪再往下看。下面我们来看强分类器是如何训练的,该过程在CvCascadeBoost::train函数中完成,代码如下: bool CvCascadeBoost::train( const CvFeatureEvaluator* _featureEvaluator,int _numSamples,int _preca…...
2024/4/16 18:25:29 - 这样的成品app直播源码到手一定会后悔
以前还是学生的时候,师哥告诉我说没有自己产品的公司不要进,纯外包的公司不要进,当时年轻气盛不觉得有什么不好,甚至觉得在高强度流水化作业的状态下更能锻炼人,后来真正入职以后才追悔莫及,一年后离职,再找工作时长了心眼,现在一心一意进行成品app直播源码开发工作,维…...
2024/4/16 18:25:53 - 软件测试过程的监控方法
软件开发项目的成败,很大程度上取决于三方面的配合:过程、人、技术,三方面相互制约,又相互促进。为了能更加有效的管理软件开发项目,规划软件开发过程,近年来国内引入了不少软件开发模型,如:CMM/CMMI,RUP,XP等,每一种都体现了一种思想,都希望能在最大限度内,协调上…...
2024/4/16 18:25:53 - 非常有用的社区
工具分类索引常用文档JDK6中文文档JDK7英文文档Android文档JavaEE6.0文档Spring3文档Scala文档jQuery参考PHP中文文档MySQL5.5手册C++参考手册更多(120+)...常用对照表HTTP Mime-typeHTML转义字符RGB颜色参考ASCII对照表HTTP状态码详解Java运算符对照C语言运算符对照PHP运算符对…...
2024/4/16 18:25:53 - 转发 、JSP开发常见问题
1. JSP开发要点 1.1. 转发 1.1.1. 什么是转发 在Web服务器端处理用户请求的时候,会有需要多个Web组件配合才能完成的情况。一个Web组件(Servlet/JSP)将未完成的处理通过容器转交给另外一个Web组件继续完成,这个转交的过程叫做转发。 常见情况是Servlet负责获取数据,然后将…...
2024/4/16 18:25:47 - 丢失DLL文件,并非全都下载相关DLL就能解决的,千万别被百度误人子弟
丢失DLL文件,并非全都下载相关DLL就能解决的,千万别被百度误人子弟 原创 作者:发威时刻运行 D:\破解相关\修改_调试_监控\汇编类\X64位调试器\x64\x64dbg.exe 不正常,少DLL文件的解决 解决办法:安装 D:\破解相关\修改_调试_监控\汇编类\X64位调试器\vcredist_x64运行这…...
2024/4/16 18:25:17 - 卷积神经网络(六)-DenseNet
卷积神经网络(一)-LeNet卷积神经网络(二)-AlexNet卷积神经网络(三)-ZF-Net和VGG-Nets卷积神经网络(四)-GoogLeNet卷积神经网络(五)-ResNet卷积神经网络(六)-DenseNet自Resnet提出以后,ResNet的变种网络层出不穷,都各有其特点,网络性能也有一定的提升。本文介绍的…...
2024/4/16 18:26:41 - 手机app直播源码开发搭建
正当兴隆的直播行业如火如荼的发展,得益于手机的便利,手机直播APP也得以快速的推广。等手机直播APP用的多了,自然而然有人问了,直播软件怎么开发? 其实回答这个问题,还是得回到基础的东西,直播源码。正是得益于直播源码的运用,直播软件开发才会如此迅速的发展,在短时间…...
2024/4/16 18:25:23 - 【软件测试】软件测试的基本流程(一般步骤)
(1)单元测试(也称模块测试):针对软件设计的基本单元——程序模块,进行正确性检验的测试工作。目的在于发现各个模块内部可能存在的各种差错。单元测试需要从程序内部结构出发设计测试用例,多个模块可以平行、独立地进行测试;(2)集成测试(也称组装测试,联合测试):…...
2024/3/31 23:24:12 - 自动机器学习超参数调整(贝叶斯优化)
【导读】机器学习中,调参是一项繁琐但至关重要的任务,因为它很大程度上影响了算法的性能。手动调参十分耗时,网格和随机搜索不需要人力,但需要很长的运行时间。因此,诞生了许多自动调整超参数的方法。贝叶斯优化是一种用模型找到函数最小值方法,已经应用于机器学习问题中…...
2024/4/16 18:25:36 - 颜色工具大汇集!!
煎蛋网上提供了超强实用的颜色工具汇总。http://jandan.net/2007/05/08/absolutely-huge-list-of-color-related-sites.html在线颜色工具Color Tool 2.0.8 Alpha自动和谐的颜色搭配,进入页面后点击:Click here to start,就可以看到调色板了。Palette Generator为你上传的图片…...
2024/5/2 13:25:07 - 手机app直播源码开发
正当兴隆的直播行业如火如荼的发展,得益于手机的便利,手机直播APP也得以快速的推广。等手机直播APP用的多了,自然而然有人问了,直播软件怎么开发? 其实回答这个问题,还是得回到基础的东西,直播源码。正是得益于直播源码的运用,直播软件开发才会如此迅速的发展,在短时间…...
2024/4/19 15:20:34 - 软件测试系列之软件测试过程模型V,W,H,X等
【出处】总结得很好,转载了,谢谢博主 http://blog.csdn.net/caozhangyingfei0109/article/details/39989711在软件开发的不断实践过程中,人们积累经验教训,预估未来发展,总结出了很多的开发模型,比较典型的开发模型有,边做边改模型,瀑布模型,快速原型模型、螺旋模型,…...
2024/4/16 18:26:17
最新文章
- 数字孪生在机械可靠性中的作用
机械可靠性是可靠性学科的一个重要的组成部分。A.M.Freudanthal教授在1971 年他提出了构件静强度可靠性设计的应力一强度干涉模型利用此模型可以进行构件可靠性设计,他在结构的可靠性与风险分析及疲劳与断裂的研究等方面一直作了大量工作 ,发表很多具有代…...
2024/5/2 19:04:55 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/3/20 10:50:27 - 方案分享 | 嵌入式指纹方案
随着智能设备的持续发展,指纹识别技术成为了现在智能终端市场和移动支付市场中占有率最高的生物识别技术。凭借高识别率、短耗时等优势,被广泛地运用在智能门锁、智能手机、智能家居等设备上。 我们推荐的品牌早已在2015年进入指纹识别应用领域ÿ…...
2024/5/1 13:00:02 - C# 构建可定时关闭的异步提示弹窗
C# 构建可定时关闭的异步提示弹窗 引言1、调用接口的实现2、自动定时窗口的实现 引言 我们在最常用最简单的提示弹框莫过于MessageBox.Show( )的方法了,但是使用久了之后,你会发现这个MessageBox并不是万能的,有事后并不想客户去点击&#x…...
2024/5/2 6:14:07 - 【外汇早评】美通胀数据走低,美元调整
原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...
2024/5/1 17:30:59 - 【原油贵金属周评】原油多头拥挤,价格调整
原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...
2024/5/2 16:16:39 - 【外汇周评】靓丽非农不及疲软通胀影响
原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...
2024/4/29 2:29:43 - 【原油贵金属早评】库存继续增加,油价收跌
原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...
2024/5/2 9:28:15 - 【外汇早评】日本央行会议纪要不改日元强势
原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...
2024/4/27 17:58:04 - 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响
原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...
2024/4/27 14:22:49 - 【外汇早评】美欲与伊朗重谈协议
原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...
2024/4/28 1:28:33 - 【原油贵金属早评】波动率飙升,市场情绪动荡
原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...
2024/4/30 9:43:09 - 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试
原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...
2024/4/27 17:59:30 - 【原油贵金属早评】市场情绪继续恶化,黄金上破
原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...
2024/5/2 15:04:34 - 【外汇早评】美伊僵持,风险情绪继续升温
原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...
2024/4/28 1:34:08 - 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势
原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...
2024/4/26 19:03:37 - 氧生福地 玩美北湖(上)——为时光守候两千年
原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...
2024/4/29 20:46:55 - 氧生福地 玩美北湖(中)——永春梯田里的美与鲜
原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...
2024/4/30 22:21:04 - 氧生福地 玩美北湖(下)——奔跑吧骚年!
原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...
2024/5/1 4:32:01 - 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!
原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...
2024/4/27 23:24:42 - 「发现」铁皮石斛仙草之神奇功效用于医用面膜
原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...
2024/4/28 5:48:52 - 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者
原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...
2024/4/30 9:42:22 - 广州械字号面膜生产厂家OEM/ODM4项须知!
原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...
2024/5/2 9:07:46 - 械字号医用眼膜缓解用眼过度到底有无作用?
原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...
2024/4/30 9:42:49 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下:1、长按电脑电源键直至关机,然后再按一次电源健重启电脑,按F8健进入安全模式2、安全模式下进入Windows系统桌面后,按住“winR”打开运行窗口,输入“services.msc”打开服务设置3、在服务界面,选中…...
2022/11/19 21:17:18 - 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。
%读入6幅图像(每一幅图像的大小是564*564) f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...
2022/11/19 21:17:16 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...
win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面,在等待界面中我们需要等待操作结束才能关机,虽然这比较麻烦,但是对系统进行配置和升级…...
2022/11/19 21:17:15 - 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...
有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows,请勿关闭计算机”的提示,要过很久才能进入系统,有的用户甚至几个小时也无法进入,下面就教大家这个问题的解决方法。第一种方法:我们首先在左下角的“开始…...
2022/11/19 21:17:14 - win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...
置信有很多用户都跟小编一样遇到过这样的问题,电脑时发现开机屏幕显现“正在配置Windows Update,请勿关机”(如下图所示),而且还需求等大约5分钟才干进入系统。这是怎样回事呢?一切都是正常操作的,为什么开时机呈现“正…...
2022/11/19 21:17:13 - 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...
Win7系统开机启动时总是出现“配置Windows请勿关机”的提示,没过几秒后电脑自动重启,每次开机都这样无法进入系统,此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一:开机按下F8,在出现的Windows高级启动选…...
2022/11/19 21:17:12 - 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...
有不少windows10系统用户反映说碰到这样一个情况,就是电脑提示正在准备windows请勿关闭计算机,碰到这样的问题该怎么解决呢,现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法:1、2、依次…...
2022/11/19 21:17:11 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...
今天和大家分享一下win7系统重装了Win7旗舰版系统后,每次关机的时候桌面上都会显示一个“配置Windows Update的界面,提示请勿关闭计算机”,每次停留好几分钟才能正常关机,导致什么情况引起的呢?出现配置Windows Update…...
2022/11/19 21:17:10 - 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...
只能是等着,别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚,只能是考虑备份数据后重装系统了。解决来方案一:管理员运行cmd:net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...
2022/11/19 21:17:09 - 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?
原标题:电脑提示“配置Windows Update请勿关闭计算机”怎么办?win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢?一般的方…...
2022/11/19 21:17:08 - 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...
关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!关机提示 windows7 正在配…...
2022/11/19 21:17:05 - 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...
钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...
2022/11/19 21:17:05 - 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...
前几天班里有位学生电脑(windows 7系统)出问题了,具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面,长时间没反应,无法进入系统。这个问题原来帮其他同学也解决过,网上搜了不少资料&#x…...
2022/11/19 21:17:04 - 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...
本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法,并在最后教给你1种保护系统安全的好方法,一起来看看!电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中,添加了1个新功能在“磁…...
2022/11/19 21:17:03 - 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...
许多用户在长期不使用电脑的时候,开启电脑发现电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机。。.这要怎么办呢?下面小编就带着大家一起看看吧!如果能够正常进入系统,建议您暂时移…...
2022/11/19 21:17:02 - 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...
配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!配置windows update失败 还原更改 请勿关闭计算机&#x…...
2022/11/19 21:17:01 - 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...
不知道大家有没有遇到过这样的一个问题,就是我们的win7系统在关机的时候,总是喜欢显示“准备配置windows,请勿关机”这样的一个页面,没有什么大碍,但是如果一直等着的话就要两个小时甚至更久都关不了机,非常…...
2022/11/19 21:17:00 - 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...
当电脑出现正在准备配置windows请勿关闭计算机时,一般是您正对windows进行升级,但是这个要是长时间没有反应,我们不能再傻等下去了。可能是电脑出了别的问题了,来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...
2022/11/19 21:16:59 - 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...
我们使用电脑的过程中有时会遇到这种情况,当我们打开电脑之后,发现一直停留在一个界面:“配置Windows Update失败,还原更改请勿关闭计算机”,等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢࿰…...
2022/11/19 21:16:58 - 如何在iPhone上关闭“请勿打扰”
Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...
2022/11/19 21:16:57