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

深度学习API——keras初学

keras定义相关概念:

Keras是一个深度学习API,使用Python语言编写的github开源项目,主要开发者为谷歌工程师。Keras底层可调用不同的机器学习平台,如TensorFlow、Theano或micsoft-CNTK。

作用:keras主要功能是简化机器学习平台的调用方式。API可实现机器学习任务中的常见操作,包括人工神经网络的构建、编译、学习、评估、测试等。

人工神经网络(ANN)或联结主义系统是受构成动物大脑的生物神经网络的启发但不完全相同的计算系统。这种系统通过例子来“学习”执行任务,而不用特定于任务的规则进行编程。例如,在图像识别中,人工神经网络可能会通过分析一些图像样本来学习识别包含猫的图像,这些图像被手工标记为“猫”或“不是猫”,并使用结果识别在其他图像中的猫。

深度学习是一种利用多层神经网络来学习数据特征和规律的方法,它可以处理高维度、非结构化和复杂的数据,并实现强大的功能。

调用流程:

大概流程:根据输入(训练数据集)和输出(测试数据集),推测出中间逻辑和关系。

需求:使用深度学习来识别手写字识别

1.加载数据集。数据集包括:训练数据集和测试数据集

from keras.datasets import mnist
path = r'C:\Users\LEGION\Desktop\datasets\mnist.npz'
(X_train, y_train), (X_test, y_test) = mnist.load_data(path)
print(X_train.shape)
print(y_train.shape)
print(X_test.shape)
print(y_test.shape)

X_train.shape 的形状为(60000, 28, 28)
y_train.shape的形状为(60000,)
X_test.shape的形状为(10000, 28, 28)
y_test.shape的形状为(10000,)

2.构建模型

 from keras.models import Sequentialfrom keras.layers import Dense,Activationmodel = Sequential()model.add(Dense(512, input_shape=(28*28,),activation='relu'))model.add(Dense(10,activation='softmax'))model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])model.fit(X_train, y_train, epochs=10, batch_size=64, verbose=1, validation_split=0.05)Testloss, Testaccuracy = model.evaluate(X_test, y_test)print('Testloss ', Testloss)print('Testaccuracy:', Testaccuracy)
  1. 第三行代码,定义模型类型,表示使用Keras中的Sequential 顺序模型。
  2. 第四行代码表示增加一个全连接层(密集层),这层有512个神经元,输入形状是(28*28,)此处的输入形状也可以写为:input_dim=28*28。Activation表示这层的激活函数使用是relu,不同的激活函数有不同的效果,大家可以自己学习。
  3. 第五行代码增加一个全连接层,这层有10个神经元,这于我们的期望输出个数一致(10个数字),激活函数使用softmax
  4. 第六行代码表示编译我们之前构建的模型,优化器选择adam,损失函数为categorical_crossentropy,指标度量选择accuracy精度。
  5. 第七行代码表示使用训练集数据来训练我们的模型,epochs表示模型的训练的时期数,每个epoch是对x,y的整个迭代,这里迭代10次。batch_size代表每个梯度更新的样本数,默认值为32. verbose:日志显示verbose = 0为不在标准输出流输出日志信息,verbose = 1为输出进度条记录,verbose=2为每个epoch输出一行记录,默认为1。validation_split按一定比例从训练集中取出一部分作为验证集。最后一行控制台输出:loss: 0.0109 - acc: 0.9964 - val_loss: 0.0862 - val_acc: 0.9823
  6. 第八行代码表示对已经训练好的模型在验证集上进行评价,打印出验证集上的损失和精度为:loss 0.0794 ,Accuracy: 0.9784。
  7. 第八行后一般会出现model.predict([np.array([features[1]]), sentence]),预测

phthon基础

r

path = r'C:\Users\LEGION\Desktop\datasets\mnist.npz'

转义字符来表示反斜杠

shape

通俗易懂的解释:每一个shape里的数字对应数组中的一对中括号,第一个数字1表示最外层的中括号。以此类推,数字2表示第二层中括号,数字3表示最里层的中括号

reshape 

数组array的合并

astype   

字符转数字 

append

array添加数据,Released_dates.append(1960)

len()min() 和 max()

min(Released_dates)

X_train = X_train.astype('float32')/255

数学基础

二维数组的赋值:

向量:在Python中, 你通过中括号[ ]来创建一个向量. 向量元素用逗号分隔。向量元素必须是同一个数据类型。比如全是数字或文本。Released_dates = [1982,1980,1973,1992]

向量维度:

思考:

数据集用什么工具生成,数据格式有什么要求

训练后的数据如何保存,如何在训练后的模型上进行识别

识别的命令是什么,输入参数是什么。

from keras.models import Input,Model
from keras.layers import Dense,Conv2D,TimeDistributedinput_ = Input(shape=(12,32,32,3))
out = TimeDistributed(Conv2D(filters=32,kernel_size=(3,3),padding='same'))(input_)
model = Model(inputs=input_,outputs=out)
model.summary()

卷积操作使用TimeDistributed,第一个12代表就是时间序列,32,32,3指的是高,宽,通道数。此处一共有896个参数,卷积核weights有3×3×3×32=864个,卷积核bias有32个。

http://www.lryc.cn/news/311269.html

相关文章:

  • Web APIs知识点讲解(阶段二)
  • 多平台拼音输入法软件的开发
  • Flutter学习7 - Dart 泛型
  • Git 基本操作 ⼯作区、暂存区、版本库
  • 利用Vue3的新API(customRef)实现防抖效果
  • 【Linux】在 Ubuntu 系统下使用 Screen 运行 Python 脚本
  • jxls——自定义命令设置动态行高
  • 前端面试练习24.3.2-3.3
  • 优先级队列(Java )
  • 大宋咨询如何进行汽车门店6S标准现场检查
  • 仿牛客网项目---点赞模块的实现
  • 【AI视野·今日CV 计算机视觉论文速览 第300期】Fri, 1 Mar 2024
  • 【单片机学习的准备】
  • 力扣hot100:438.找到字符串中所有字母异位词
  • Kali Linux 2024.1
  • springboot启动加载
  • 基于Java的智能停车场管理系统(Vue.js+SpringBoot)
  • ESD Clamp cell是什么?
  • 费率电能表
  • 2张图2秒钟3D重建!这款AI工具火爆GitHub,网友:忘掉Sora
  • C++高级面试题:请解释 C++ 中的指针和引用之间的区别。
  • Git 配置处理客户端无法正常访问到 github 原网站时,npm 下载依赖包失败的问题
  • 前端爬虫+可视化Demo
  • keepAlive
  • 蓝桥杯练习题——dp
  • kotlin基础语法
  • 淘宝天猫商家爬虫工具 电商采集软件使用教程
  • 建库建表时,最容易忽略的10个细节
  • 【基础知识】什么是 PPO(Proximal Policy Optimization,近端策略优化)
  • 程序员如何选择职业赛道?