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

网站移动字幕要怎么做免费模板简历网站

网站移动字幕要怎么做,免费模板简历网站,html视频教学,0基础1小时网站建设教程文章目录 0 前言1 简介2 LeNet-5 模型的介绍2.1 结构解析2.2 C1层2.3 S2层S2层和C3层连接 2.4 F6与C5层 3 写数字识别算法模型的构建3.1 输入层设计3.2 激活函数的选取3.3 卷积层设计3.4 降采样层3.5 输出层设计 4 网络模型的总体结构5 部分实现代码6 在线手写识别7 最后 0 前言… 文章目录 0 前言1 简介2 LeNet-5 模型的介绍2.1 结构解析2.2 C1层2.3 S2层S2层和C3层连接 2.4 F6与C5层 3 写数字识别算法模型的构建3.1 输入层设计3.2 激活函数的选取3.3 卷积层设计3.4 降采样层3.5 输出层设计 4 网络模型的总体结构5 部分实现代码6 在线手写识别7 最后 0 前言 优质竞赛项目系列今天要分享的是 基于卷积神经网络的手写字符识别 该项目较为新颖适合作为竞赛课题方向学长非常推荐 更多资料, 项目分享 https://gitee.com/dancheng-senior/postgraduate 1 简介 该设计学长使用python基于TensorFlow设计手写数字识别算法并编程实现GUI界面构建手写数字识别系统。 这是学长做的深度学习demo大家可以用于竞赛课题。 这里学长不会以论文的形式展现而是以编程实战完成深度学习项目的角度去描述。 项目要求主要解决的问题是手写数字识别最终要完成一个识别系统。 设计识别率高的算法实现快速识别的系统。 2 LeNet-5 模型的介绍 学长实现手写数字识别使用的是卷积神经网络建模思想来自LeNet-5如下图所示 2.1 结构解析 这是原始的应用于手写数字识别的网络我认为这也是最简单的深度网络。 LeNet-5不包括输入一共7层较低层由卷积层和最大池化层交替构成更高层则是全连接和高斯连接。 LeNet-5的输入与BP神经网路的不一样。这里假设图像是黑白的那么LeNet-5的输入是一个32*32的二维矩阵。同 时输入与下一层并不是全连接的而是进行稀疏连接。本层每个神经元的输入来自于前一层神经元的局部区域(5×5)卷积核对原始图像卷积的结果加上相应的阈值得出的结果再经过激活函数处理输出即形成卷积层C层。卷积层中的每个特征映射都各自共享权重和阈值这样能大大减少训练开销。降采样层S层为减少数据量同时保存有用信息进行亚抽样。 2.2 C1层 第一个卷积层C1层由6个特征映射构成每个特征映射是一个28×28的神经元阵列其中每个神经元负责从5×5的区域通过卷积滤波器提取局部特征。一般情况下滤波器数量越多就会得出越多的特征映射反映越多的原始图像的特征。本层训练参数共6×(5×51)156个每个像素点都是由上层5×525个像素点和1个阈值连接计算所得共28×28×156122304个连接。 2.3 S2层 S2层是对应上述6个特征映射的降采样层pooling层。pooling层的实现方法有两种分别是max-pooling和mean- poolingLeNet-5采用的是mean- pooling即取n×n区域内像素的均值。C1通过2×2的窗口区域像素求均值再加上本层的阈值然后经过激活函数的处理得到S2层。pooling的实现在保存图片信息的基础上减少了权重参数降低了计算成本还能控制过拟合。本层学习参数共有1*6612个S2中的每个像素都与C1层中的2×2个像素和1个阈值相连共6×(2×21)×14×145880个连接。 S2层和C3层连接 S2层和C3层的连接比较复杂。C3卷积层是由16个大小为10×10的特征映射组成的当中的每个特征映射与S2层的若干个特征映射的局部感受野大小为5×5相连。其中前6个特征映射与S2层连续3个特征映射相连后面接着的6个映射与S2层的连续的4个特征映射相连然后的3个特征映射与S2层不连续的4个特征映射相连最后一个映射与S2层的所有特征映射相连。 此处卷积核大小为5×5所以学习参数共有6×(3×5×51)9×(4×5×51)1×(6×5×51)1516个参数。而图像大小为28×28因此共有151600个连接。 S4层是对C3层进行的降采样与S2同理学习参数有16×11632个同时共有16×(2×21)×5×52000个连接。 C5层是由120个大小为1×1的特征映射组成的卷积层而且S4层与C5层是全连接的因此学习参数总个数为120×(16×251)48120个。 2.4 F6与C5层 F6是与C5全连接的84个神经元所以共有84×(1201)10164个学习参数。 卷积神经网络通过通过稀疏连接和共享权重和阈值大大减少了计算的开销同时pooling的实现一定程度上减少了过拟合问题的出现非常适合用于图像的处理和识别。 3 写数字识别算法模型的构建 3.1 输入层设计 输入为28×28的矩阵而不是向量。 3.2 激活函数的选取 Sigmoid函数具有光滑性、鲁棒性和其导数可用自身表示的优点但其运算涉及指数运算反向传播求误差梯度时求导又涉及乘除运算计算量相对较大。同时针对本文构建的含有两层卷积层和降采样层由于sgmoid函数自身的特性在反向传播时很容易出现梯度消失的情况从而难以完成网络的训练。因此本文设计的网络使用ReLU函数作为激活函数。 3.3 卷积层设计 学长设计卷积神经网络采取的是离散卷积卷积步长为1即水平和垂直方向每次运算完移动一个像素。卷积核大小为5×5。 3.4 降采样层 学长设计的降采样层的pooling方式是max-pooling大小为2×2。 3.5 输出层设计 输出层设置为10个神经网络节点。数字0~9的目标向量如下表所示 4 网络模型的总体结构 5 部分实现代码 使用Python调用TensorFlow的api完成手写数字识别的算法。 注我的程序运行环境是Win10,python3.。 当然也可以在Linux下运行由于TensorFlow对py2和py3兼容得比较好在Linux下可以在python2.7中运行。 ​ #!/usr/bin/env python2# -*- coding: utf-8 -*-#import modulesimport numpy as npimport matplotlib.pyplot as plt#from sklearn.metrics import confusion_matriximport tensorflow as tfimport timefrom datetime import timedeltaimport mathfrom tensorflow.examples.tutorials.mnist import input_datadef new_weights(shape):return tf.Variable(tf.truncated_normal(shape,stddev0.05))def new_biases(length):return tf.Variable(tf.constant(0.1,shapelength))def conv2d(x,W):return tf.nn.conv2d(x,W,strides[1,1,1,1],paddingSAME)def max_pool_2x2(inputx):return tf.nn.max_pool(inputx,ksize[1,2,2,1],strides[1,2,2,1],paddingSAME)#import datadata input_data.read_data_sets(./data, one_hotTrue) # one_hot means [0 0 1 0 0 0 0 0 0 0] stands for 2print(Size of:)print(--Training-set:\t\t{}.format(len(data.train.labels)))print(--Testing-set:\t\t{}.format(len(data.test.labels)))print(--Validation-set:\t\t{}.format(len(data.validation.labels)))data.test.cls np.argmax(data.test.labels,axis1) # show the real test labels: [7 2 1 ..., 4 5 6], 10000valuesx tf.placeholder(float,shape[None,784],namex)x_image tf.reshape(x,[-1,28,28,1])y_true tf.placeholder(float,shape[None,10],namey_true)y_true_cls tf.argmax(y_true,dimension1)# Conv 1layer_conv1 {weights:new_weights([5,5,1,32]),biases:new_biases([32])}h_conv1 tf.nn.relu(conv2d(x_image,layer_conv1[weights])layer_conv1[biases])h_pool1 max_pool_2x2(h_conv1)# Conv 2layer_conv2 {weights:new_weights([5,5,32,64]),biases:new_biases([64])}h_conv2 tf.nn.relu(conv2d(h_pool1,layer_conv2[weights])layer_conv2[biases])h_pool2 max_pool_2x2(h_conv2)# Full-connected layer 1fc1_layer {weights:new_weights([7*7*64,1024]),biases:new_biases([1024])}h_pool2_flat tf.reshape(h_pool2,[-1,7*7*64])h_fc1 tf.nn.relu(tf.matmul(h_pool2_flat,fc1_layer[weights])fc1_layer[biases])# Droupout Layerkeep_prob tf.placeholder(float)h_fc1_drop tf.nn.dropout(h_fc1,keep_prob)# Full-connected layer 2fc2_layer {weights:new_weights([1024,10]),biases:new_weights([10])}# Predicted classy_pred tf.nn.softmax(tf.matmul(h_fc1_drop,fc2_layer[weights])fc2_layer[biases]) # The output is like [0 0 1 0 0 0 0 0 0 0]y_pred_cls tf.argmax(y_pred,dimension1) # Show the real predict number like 2# cost function to be optimizedcross_entropy -tf.reduce_mean(y_true*tf.log(y_pred))optimizer tf.train.AdamOptimizer(learning_rate1e-4).minimize(cross_entropy)# Performance Measurescorrect_prediction tf.equal(y_pred_cls,y_true_cls)accuracy tf.reduce_mean(tf.cast(correct_prediction,float))with tf.Session() as sess:init tf.global_variables_initializer()sess.run(init)train_batch_size 50def optimize(num_iterations):total_iterations0start_time time.time()for i in range(total_iterations,total_iterationsnum_iterations):x_batch,y_true_batch data.train.next_batch(train_batch_size)feed_dict_train_op {x:x_batch,y_true:y_true_batch,keep_prob:0.5}feed_dict_train {x:x_batch,y_true:y_true_batch,keep_prob:1.0}sess.run(optimizer,feed_dictfeed_dict_train_op)# Print status every 100 iterations.if i%1000:# Calculate the accuracy on the training-set.acc sess.run(accuracy,feed_dictfeed_dict_train)# Message for printing.msg Optimization Iteration:{0:6}, Training Accuracy: {1:6.1%}# Print it.print(msg.format(i1,acc))# Update the total number of iterations performedtotal_iterations num_iterations# Ending timeend_time time.time()# Difference between start and end_times.time_dif end_time-start_time# Print the time-usageprint(Time usage:str(timedelta(secondsint(round(time_dif)))))test_batch_size 256def print_test_accuracy():# Number of images in the test-set.num_test len(data.test.images)cls_pred np.zeros(shapenum_test,dtypenp.int)i 0while i num_test:# The ending index for the next batch is denoted j.j min(itest_batch_size,num_test)# Get the images from the test-set between index i and jimages data.test.images[i:j, :]# Get the associated labelslabels data.test.labels[i:j, :]# Create a feed-dict with these images and labels.feed_dict{x:images,y_true:labels,keep_prob:1.0}# Calculate the predicted class using Tensorflow.cls_pred[i:j] sess.run(y_pred_cls,feed_dictfeed_dict)# Set the start-index for the next batch to the# end-index of the current batchi jcls_true data.test.clscorrect (cls_truecls_pred)correct_sum correct.sum()acc float(correct_sum) / num_test# Print the accuracymsg Accuracy on Test-Set: {0:.1%} ({1}/{2})print(msg.format(acc,correct_sum,num_test))# Performance after 10000 optimization iterationsoptimize(num_iterations10000)print_test_accuracy()savew_hl1 layer_conv1[weights].eval()saveb_hl1 layer_conv1[biases].eval()savew_hl2 layer_conv2[weights].eval()saveb_hl2 layer_conv2[biases].eval()savew_fc1 fc1_layer[weights].eval()saveb_fc1 fc1_layer[biases].eval()savew_op fc2_layer[weights].eval()saveb_op fc2_layer[biases].eval()np.save(savew_hl1.npy, savew_hl1)np.save(saveb_hl1.npy, saveb_hl1)np.save(savew_hl2.npy, savew_hl2)np.save(saveb_hl2.npy, saveb_hl2)np.save(savew_hl3.npy, savew_fc1)np.save(saveb_hl3.npy, saveb_fc1)np.save(savew_op.npy, savew_op)np.save(saveb_op.npy, saveb_op) 运行结果显示测试集中准确率大概为99.2%。 查看混淆矩阵 6 在线手写识别 7 最后 更多资料, 项目分享 https://gitee.com/dancheng-senior/postgraduate
http://www.w-s-a.com/news/259835/

相关文章:

  • 燕郊 网站开发网站里的地图定位怎么做
  • 门户网站建设招标互联网创业项目概述
  • 用什么做网站比较好市场调研公司是做什么的
  • 电商网站充值消费系统绍兴网站优化
  • 深圳网站建设公司联虚拟币交易网站开发
  • 专业网站设计建设公司抖音代运营公司排名前十强
  • 做网站架构肃北蒙古族自治县建设局网站
  • 推广网站怎么建经济研究院网站建设方案
  • 网站建设商家淘宝客自建网站做还是用微信qq做
  • django做网站效率高吗涉县移动网站建设报价
  • 做外贸网站注册什么邮箱能够做渗透的网站
  • 购物网站 怎么做织梦网站会员功能
  • 北京市网站开发公司郑州联通网站备案
  • 温岭专业营销型网站建设地址wordpress小程序怎么不用认证审核
  • 网站建设主体设计要求微信公众号缴费
  • 网站建设的税率WordPress多用户建站
  • 专业门户网站的规划与建设网络培训
  • 东莞汽车总站停止营业crm管理系统在线使用
  • 深圳网站建设公司哪个网络优化是做什么的
  • 大连地区做网站自己怎么做电影网站
  • 成都APP,微网站开发手机要访问国外网站如何做
  • 网站app建设用discuz做的手机网站
  • vs 2008网站做安装包公众号登录超时
  • 银川做网站推广wordpress dux会员中心
  • 双辽做网站wordpress怎么写html代码
  • 建站公司哪家好 知道万维科技西安都有哪些公司
  • 设计网站官网入口佛山 品牌设计
  • 专用网站建设wordpress mega
  • 网站建设与优化推广方案内容网站整站下载带数据库后台的方法
  • 做网站PAAS系统外链是什么意思