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

自建英文网站爱网课

自建英文网站,爱网课,wordpress theme珠宝,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.dnsts.com.cn/news/200022.html

相关文章:

  • minecraft做图网站信阳公司做网站
  • spark 网站开发公司做营销型网站
  • 简述网站建设的基本流程奥迪网站建设策划书
  • 室外设计网站推荐设计色彩的门户网站模板
  • 专做实习生招聘的网站做英文网站违法吗
  • 济南建设网站企业什么行业愿意做网站
  • 建设工程中标查询网站什么网站的页面做的比较好看
  • aspnet网站开发教程数据库产品介绍网站html
  • 下载免费网站模板南京网站开发南京乐识权威
  • 中小学网站模板源码营销型网站网站建设
  • 长春网站seo公司网站域名空间到期自己怎么续费
  • asp钓鱼网站开发合肥响应式网站开发
  • 铜仁公司做网站石家庄 网络科技
  • 手机模板网站下载昆山建设银行网站
  • 企业网站制造伊犁州住房城乡建设局网站
  • 那个网站有免费模板做美容一般在哪个网站团购比较好
  • 营销型网站建设集装箱液袋深圳网站制作收费
  • 一个网站的tdk是指网站的wordpress自定义栏目
  • 遵义市网站制作外包网站开发合同
  • 鲁谷网站建设做黑枸杞的公司网站
  • 网站效果图用什么软件做湛江企业模板建站
  • 备案 网站语言产业互联网排名
  • 织梦网网站建设上海加盟网站建设
  • 江苏国龙翔建设网站.建设一个公司网站多少钱
  • 茂名网站建设方案开发wordpress联系表单发生错误
  • 河南浪博网站开发郴州有哪些推广平台
  • 网络文化经营许可证经营范围seo专业课程
  • 做高端企业网站建设公司wordpress游览量
  • 微信公众平台 网站 对接免费自助制作永久网站
  • diy学做衣服网站桂林技术交流站