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

建网站语言做网站什么主题好

建网站语言,做网站什么主题好,设计导航网站 左侧菜单栏,营销型网站建设哪好背景 keras深度学习框架#xff0c;并不是一个独立的深度学习框架#xff0c;它后台依赖tensorflow或者theano。大部分开发者应该使用的是tensorflow。keras可以很方便的像搭积木一样根据模型搭出我们需要的神经网络#xff0c;然后进行编译#xff0c;训练#xff0c;测试…   背景 keras深度学习框架并不是一个独立的深度学习框架它后台依赖tensorflow或者theano。大部分开发者应该使用的是tensorflow。keras可以很方便的像搭积木一样根据模型搭出我们需要的神经网络然后进行编译训练测试预测。 今天介绍的手写数字识别实验主要是熟悉keras搭建神经网络的流程以及大体的思路。现如今手写数字识别实验的代码各种各样对于初学者而言我们需要的是类似helloworld那样简单的示例。通过示例我们可以了解神经网络的搭建过程。 这里使用的手写数字识别通过搭建网络构建模型最后保存模型然后我们加载模型通过真实的图片来预测也检验一下神经网络的能力。 这里手写数字识别数据来源于官方自带mnist数据集这个数据集包含60000个训练集和10000个测试集。每个数据是由28 * 28 784个矩阵元素组成。所以我们自己用来测试的图片最后应该也要按照这个28*28的尺寸来制作并且最后进行预测predict的时候也要像训练集或者测试集一样把图片转为一个784元素的数组。 准备代码 import keras import numpy as np import tensorflow as tf from keras.models import Sequential from keras.layers import Dense, Activation from tensorflow.keras import datasets, utils import matplotlib.pyplot as plt(x_train, y_train), (x_test, y_test) datasets.mnist.load_data() x_train x_train.reshape((-1, 28*28)) x_train x_train.astype(float32)/255 x_test x_test.reshape((-1, 28*28)) x_test x_test.astype(float32)/255y_train utils.to_categorical(y_train, num_classes10) y_test utils.to_categorical(y_test, num_classes10)print(x_train.shape, x_train.shape) print(x_test.shape, x_test.shape) print(y_train.shape, y_train.shape) print(y_test.shape, y_test.shape)layer [Dense(32, input_shape(784,)),Activation(relu),Dense(10),Activation(softmax)]model Sequential(layer)model Sequential() # model.add(Dense(units784, activationrelu, input_dim784)) model.add(Dense(512, activationrelu, input_shape(28*28, ))) model.add(Dense(10, activationsoftmax))model.compile(losscategorical_crossentropy, optimizeradam, metrics[accuracy]) model.summary()history model.fit(x_train, y_train, epochs5, batch_size128, validation_data(x_test, y_test))acc history.history[accuracy] val_acc history.history[val_accuracy] epochs range(1, len(acc) 1) plt.plot(epochs, acc, bo, labelTraining accuracy) plt.plot(epochs, val_acc, b, labelValidation accuracy) plt.title(Training and Validation accuracy) plt.xlabel(Epochs) plt.ylabel(Accuracy) plt.legend() plt.show() model.save(mnist.h5) prediction model.predict(x_test[:1], batch_size32) print(x_test[:1]) print(y_test[:1]) print(prediction) print(np.argmax(prediction, axis1)) 这个代码在引入了相关库之后进行的第一件事就是数据处理 (x_train, y_train), (x_test, y_test) datasets.mnist.load_data() x_train x_train.reshape((-1, 28*28)) x_train x_train.astype(float32)/255 x_test x_test.reshape((-1, 28*28)) x_test x_test.astype(float32)/255 y_train utils.to_categorical(y_train, num_classes10) y_test utils.to_categorical(y_test, num_classes10)print(x_train.shape, x_train.shape) print(x_test.shape, x_test.shape) print(y_train.shape, y_train.shape) print(y_test.shape, y_test.shape) 我们的数据集x_train,x_test就是我们的图片数据这个数据是784个元素组成的数组我们先进行转矩阵然后对像素点取模得到0-1之间的值。我们代码最后打印了x_test[:1]可以看看它的样子 这里我们还使用了utils.to_categorical(y_test,num_classes10) 对我们的目标进行了one-hot转码。通过这个图我们也看到了数字 7 转了one-hot编码之后变为了[0,0,0,0,0,0,0,1,0,0]。 这个代码构建了一个简单的神经网络也就两层 第一层输入层 Dense(512,activationrelu,input_shape(28*28, ))  #512个节点relu激活函数输入形状或者维度 28*28784。代码中也给出了另一种通过input_dim来指定维度的方法意思是一样的但是那种写法model.add(Dense(units784, activationrelu, input_dim784))指定的网络节点units784。这个数字可以随便定义。手写数字识别里面设置512784都可以。 第二层输出层 Dense(10, activationsoftmax) #这里指定对应十个分类也就是数字0123456789的个数。手写数字识别是一个多分类问题。 没有隐藏层也没有其他的Dropout。就是简单神经网络。 另外代码中还给出了一种构建神经网络的办法 layer [Dense(32, input_shape(784,)),Activation(relu),Dense(10),Activation(softmax)]model Sequential(layer) 意思是一样的只不过这里units32也就是输入层由32个神经网络节点组成。  model.compile(losscategorical_crossentropy, optimizeradam, metrics[accuracy]) model.summary() 这是编译神经网络和打印神经网络概要。 编译神经网络传入losscategorical_cressentropy 表示损失函数求的是交叉熵。optimizeradam表示优化器是adam表示自适应算法另外也有可能会看到sgd随机梯度下降算法或者rmsprop也是一种自适应算法。metrics[accuracy]统计指标这里指定成功率。  通过model.summary()我们可以看到神经网络节点信息  history model.fit(x_train, y_train, epochs5, batch_size128, validation_data(x_test, y_test)) 这里是把训练和测试神经网络放在一起了我们传入的validation_data指定了测试数据集。如果不指定validation_data那么后面我们通过model.evaluate(x_test,y_test) 也可以得到loss,acc等数据。 acc history.history[accuracy] val_acc history.history[val_accuracy] epochs range(1, len(acc) 1) plt.plot(epochs, acc, bo, labelTraining accuracy) plt.plot(epochs, val_acc, b, labelValidation accuracy) plt.title(Training and Validation accuracy) plt.xlabel(Epochs) plt.ylabel(Accuracy) plt.legend() plt.show() 我们通过matplot来展示acc,val_acc等信息结果如下图所示 我们还通过model.save(mnist.h5)保存模型后面我们会加载这个模型来进行预测。 prediction model.predict(x_test[:1], batch_size32) print(x_test[:1]) print(y_test[:1]) print(prediction) print(np.argmax(prediction, axis1)) 我们简单通过测试集的第一个数字7来进行了一个验证这个验证主要是要知道我们将来传入图片需要什么类型的数据以及得到预测结果之后怎么取值。这里prediction是一个按照概率来进行组装的数组哪个概率大最终的结果就是谁。我们通过np.argmax(prediction, axis1)指定获取一个数组中按行(axis1)来统计最大的那个数。 *************************************************************** 预测 很多代码示例里面基本上到了model.evaluate()对算法进行评估之后就没有了对于刚入门的人来说神经网络创建了测试了好不好用也不知道。因为这个训练集和测试机都是官网给出的例子对于程序员来说通过实践来验证一个猜测那才是最重要的至于这是什么不重要。 上面的代码最后我们通过测试集x_test[:1]也就是第一个测试数字简单做了一个预测大概知道了要预测需要的数据是一个[28*28784]的数组。而我们准备的测试图片应该也要和官方给出的测试数据对应上也即是前面提到的图片是28*28像素的数字图片如下所示 同样的给出代码 import keras import numpy as np import cv2 from keras.models import load_modelmodel load_model(mnist.h5)def predict(img_path):img cv2.imread(img_path, 0)img img.reshape(28, 28).astype(float32) / 255 # 0 1img img.reshape(-1, 784) # 28 * 28 - 784label model.predict(img)label np.argmax(label, axis1)print({} - {}.format(img_path, label[0]))if __name__ __main__:for _ in range(10):predict(number_images/b_{}.png.format(_))这些图片我们放在number_images目录下命名规则是b_0.png,b_1.png这样子。 最后我们加载模型并通过opencv库加载图片并转换图片矩阵为784个元素的数组。然后交给模型预测预测结果是一个概率数组取概率最大的那个数组元素。 预测结果如下 结果很感人并没有达到很高的概率准确率60%而且这个概率对于手写图片识别来说还有点偏高因为实际上很多数字图片识别错误。  这篇文章主要就keras构建简单神经网络并进行训练测试最后还通过我们自己手写的数字图片来进行预测验证也过了一把深度学习的瘾。 本文keras和tensorflow版本是2.8.0可能有几个api与其他地方有区别比如datasets,这里使用的是tensorflow.keras.datasets。另外在计算成功率acc的时候使用的是history[accuracy]有的地方可能直接是history[acc]应该是版本的问题根据自己的版本找到合适的方法就行。
http://www.hkea.cn/news/14522842/

相关文章:

  • 成都集团网站设计推荐wordpress 自定义产品页面
  • 质量基础设施一站式服务工作站怎样看一个网站是谁做的
  • 珠海网站建设小小网络wordpress 导入 微信
  • 找别人做网站的注意事项网络网站开发设计
  • 医疗服务网站素材wordpress当前页面id
  • 中国建设银行个人网站建设网站市场细分
  • layui做网站word调用wordpress
  • 网站建设分工说明怎么做m开头的网站
  • 商务网站要怎么设计交换友情链接是什么意思
  • 网站用什么软件程序做优化网站公司价格是多少钱
  • 玉树电子商务网站建设哪家好网站设计的原则
  • 网站不推广如何排名怎么搭建个人网站电脑做服务器
  • 网站开发需求说明书秒收录关键词代发
  • 建设银行网站邮箱网站流量seo
  • 家具网站素材成都网站建设哪个好
  • 商丘网站建设设计网上开店策划书
  • 温州网站建设方案外包野花社区在线观看高清视频动漫
  • 网站编程培训班健康陕西app管理端
  • 医院网站建设案例开发网站公司交税
  • 在线做行测的网站网站建设与管理案例教程教学大纲
  • 电子商务网站建设及推广怎么在360网站做词条
  • 诸城网站设计网站用哪些系统做的比较好用
  • 不会写代码怎样做网站类似全民互推的推广平台
  • 给 小企业 建设网站wordpress 弹窗浮动层
  • 工业品一站式采购平台wordpress 可视化排版
  • 嘉兴做网站赚钱么大庆加油app老版本
  • 丽水网站seowordpress音乐列表
  • 郑州网站建设那家好网址源码在线查看
  • 免费的网站网站建设的工作视频人的吗
  • 食品网站建设网站每天点击量多少好