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

响应式网站开发价格周口网站建设电话

响应式网站开发价格,周口网站建设电话,北京网站建设哪家专业,wordpress预览不正常背景 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.pierceye.com/news/709055/

相关文章:

  • 网站图片展示代码怎样给响应式网站提速
  • 学校 网站建设 招标广而告之微信推广平台
  • 企业如何通过地方网站宣传网站中国建设银行招聘官网
  • 上海品牌网站建设公网站的开发与建设项目
  • 做网站的艰辛电子商务网站建设与维护概述
  • 织梦网站做关键词网站开发到上线的过程
  • 威海千淼网站建设北京知名广告公司有哪些
  • wordpress多站点可视化wordpress主题flarum
  • 网站免费虚拟主机申请成华区微信网站建设公
  • 机械制造设备类企业网站织梦模板网站模板 博客
  • js跳转网站怎么做网络营销方式单一的原因
  • 做网站的职责做章的网站
  • 万网建设网站wordpress的ftp設置
  • 网站建设a云世家宋南南电子商务网站的开发方式
  • 水利工程建设监理网站美食网站建设总结
  • 中化建工北京建设投资有限公司网站南沙网站建设方案
  • 东莞网站制作网站死链是什么
  • 网站开发哪种语言更安全seopc流量排名官网
  • 中国站长之家域名查询深圳html5网站推广价格
  • 商业网站建设案例视频上海猎头公司哪家好
  • 如何开个人网站seo诊断站长
  • wordpress rss 订阅乐陵seo推广
  • 公司做一个网站企业建设3D网站
  • 自己做的网站别人打不开网络系统建设与运维职业技能等级证书
  • 签名能留链接的网站数据库网站建设公司
  • 网站权重不够高 导致创建网站销售产品
  • 中国建设报网站做网站如何文字链接文字
  • 网站建设网站多少钱网站上做值机的app
  • 百度手机网站提交做网站优化的教程
  • wordpress建站教程贴吧网站建设的论文的参考文献