学习了keras已经好几天了,之前一直拒绝使用keras,但是现在感觉keras是真的好用啊,可以去尝试一下啊。

首先展示的第一个代码,还是mnist数据集的训练和测试,以下是代码:

from keras.models import Sequential
from keras.layers.core import Activation, Dropout
from keras.layers.core import Dense
from keras.optimizers import SGDfrom keras.datasets import mnist
from keras.utils import np_utilsimport numpy as np
np.random.seed(1671)#网络和训练
NB_EPOCH = 20
BATCH_SIZE = 128
VERBOSE = 1
NB_CLASSES = 10
OPTIMIZER = SGD()
N_HIDDEN = 128
VALIDATION_SPLIT = 0.2
DROPOUT = 0.3#数据
(X_train, Y_train), (X_test, Y_test) = mnist.load_data()RESHAPED = 784X_train = X_train.reshape(60000, RESHAPED)
X_test = X_test.reshape(10000, RESHAPED)
X_train = X_train.astype('float32')
X_test = X_test.astype('float32')#归一化
X_train /= 255
X_test /= 255print(X_train.shape[0], 'train samples')
print(X_test.shape[0], 'test samples')#将标签变成二进制类别矩阵
Y_train = np_utils.to_categorical(Y_train, NB_CLASSES)
Y_test = np_utils.to_categorical(Y_test, NB_CLASSES)#模型的构建
model = Sequential()
model.add(Dense(N_HIDDEN, input_shape=(RESHAPED,)))
model.add(Activation('relu'))
model.add(Dropout(DROPOUT))
model.add(Dense(N_HIDDEN))
model.add(Activation('relu'))
model.add(Dense(NB_CLASSES))
model.add(Activation('softmax'))
model.summary()#显示模型结构
print(model.summary())#配置训练模型
model.compile(loss='categorical_crossentropy', optimizer=OPTIMIZER, metrics=['accuracy'])
#模型训练
history = model.fit(X_train, Y_train,batch_size=BATCH_SIZE, epochs=NB_EPOCH,verbose=VERBOSE, validation_split=VALIDATION_SPLIT)#模型测试
score = model.evaluate(X_test, Y_test, verbose=VERBOSE)
print('test score:', score[0])
print('test accuracy:', score[1])

感觉重要的代码是model.compile,model.fit,model.evaluate具体可以去看keras中文网,当然可以看下面的。

compile

compile(self, optimizer, loss=None, metrics=None, loss_weights=None, sample_weight_mode=None, weighted_metrics=None, target_tensors=None)

用于配置训练模型。

参数

  • optimizer: 字符串(优化器名)或者优化器对象。详见 optimizers。
  • loss: 字符串(目标函数名)或目标函数。详见 losses。 如果模型具有多个输出,则可以通过传递损失函数的字典或列表,在每个输出上使用不同的损失。模型将最小化的损失值将是所有单个损失的总和。
  • metrics: 在训练和测试期间的模型评估标准。通常你会使用 metrics = ['accuracy']。 要为多输出模型的不同输出指定不同的评估标准,还可以传递一个字典,如 metrics = {'output_a':'accuracy'}
  • sample_weight_mode: 如果你需要执行按时间步采样权重(2D 权重),请将其设置为 temporal。 默认为 None,为采样权重(1D)。如果模型有多个输出,则可以通过传递 mode 的字典或列表,以在每个输出上使用不同的 sample_weight_mode
  • weighted_metrics: 在训练和测试期间,由 sample_weight 或 class_weight 评估和加权的度量标准列表。
  • target_tensors: 默认情况下,Keras 将为模型的目标创建一个占位符,在训练过程中将使用目标数据。相反,如果你想使用自己的目标张量(反过来说,Keras 在训练期间不会载入这些目标张量的外部 Numpy 数据),您可以通过 target_tensors 参数指定它们。它应该是单个张量(对于单输出 Sequential 模型)。
  • **kwargs: 当使用 Theano/CNTK 后端时,这些参数被传入 K.function。当使用 TensorFlow 后端时,这些参数被传递到 tf.Session.run

fit

fit(self, x=None, y=None, batch_size=None, epochs=1, verbose=1, callbacks=None, validation_split=0.0, validation_data=None, shuffle=True, class_weight=None, sample_weight=None, initial_epoch=0, steps_per_epoch=None, validation_steps=None)

以固定数量的轮次(数据集上的迭代)训练模型。

参数

  • x: 训练数据的 Numpy 数组。 如果模型中的输入层被命名,你也可以传递一个字典,将输入层名称映射到 Numpy 数组。 如果从本地框架张量馈送(例如 TensorFlow 数据张量)数据,x 可以是 None(默认)。
  • y: 目标(标签)数据的 Numpy 数组。 如果模型中的输出层被命名,你也可以传递一个字典,将输出层名称映射到 Numpy 数组。 如果从本地框架张量馈送(例如 TensorFlow 数据张量)数据,y 可以是 None(默认)。
  • batch_size: 整数或 None。每次提度更新的样本数。如果未指定,默认为 32.
  • epochs: 整数。训练模型迭代轮次。一个轮次是在整个 xy 上的一轮迭代。请注意,与 initial_epoch 一起,epochs 被理解为 「最终轮次」。模型并不是训练了 epochs 轮,而是到第 epochs 轮停止训练。
  • verbose: 0, 1 或 2。日志显示模式。 0 = 安静模式, 1 = 进度条, 2 = 每轮一行。
  • callbacks: 一系列的 keras.callbacks.Callback 实例。一系列可以在训练时使用的回调函数。详见 callbacks。
  • validation_split: 在 0 和 1 之间浮动。用作验证集的训练数据的比例。模型将分出一部分不会被训练的验证数据,并将在每一轮结束时评估这些验证数据的误差和任何其他模型指标。验证数据是混洗之前 xy 数据的最后一部分样本中。
  • validation_data: 元组 (x_val,y_val) 或元组 (x_val,y_val,val_sample_weights),用来评估损失,以及在每轮结束时的任何模型度量指标。模型将不会在这个数据上进行训练。这个参数会覆盖 validation_split
  • shuffle: 布尔值(是否在每轮迭代之前混洗数据)或者 字符串 (batch)。batch 是处理 HDF5 数据限制的特殊选项,它对一个 batch 内部的数据进行混洗。当 steps_per_epochNone 时,这个参数无效。
  • class_weight: 可选的字典,用来映射类索引(整数)到权重(浮点)值,用于加权损失函数(仅在训练期间)。这可能有助于告诉模型 「更多关注」来自代表性不足的类的样本。
  • sample_weight: 训练样本的可选 Numpy 权重数组,用于对损失函数进行加权(仅在训练期间)。您可以传递与输入样本长度相同的平坦(1D)Numpy 数组(权重和样本之间的 1:1 映射),或者在时序数据的情况下,可以传递尺寸为 (samples, sequence_length) 的 2D 数组,以对每个样本的每个时间步施加不同的权重。在这种情况下,你应该确保在 compile() 中指定 sample_weight_mode="temporal"
  • initial_epoch: 开始训练的轮次(有助于恢复之前的训练)。
  • steps_per_epoch: 在声明一个轮次完成并开始下一个轮次之前的总步数(样品批次)。使用 TensorFlow 数据张量等输入张量进行训练时,默认值 None 等于数据集中样本的数量除以 batch 的大小,如果无法确定,则为 1。
  • validation_steps: 只有在指定了 steps_per_epoch时才有用。停止前要验证的总步数(批次样本)。

返回

一个 History 对象。其 History.history 属性是连续 epoch 训练损失和评估值,以及验证集损失和评估值的记录(如果适用)。

evaluate

evaluate(self, x=None, y=None, batch_size=None, verbose=1, sample_weight=None, steps=None)

在测试模式,返回误差值和评估标准值。

计算逐批次进行。

参数

  • x: 输入数据,Numpy 数组或列表(如果模型有多输入)。 如果从本地框架张量馈送(例如 TensorFlow 数据张量)数据,x 可以是 None(默认)。
  • y: 标签,Numpy 数组。 如果从本地框架张量馈送(例如 TensorFlow 数据张量)数据,y 可以是 None(默认)。
  • batch_size: 整数。每次梯度更新的样本数。如果未指定,默认为 32。
  • verbose: 日志显示模式,0 或 1。
  • sample_weight: 样本权重,Numpy 数组。
  • steps: 整数或 None。 声明评估结束之前的总步数(批次样本)。默认值 None

返回

标量测试误差(如果模型没有评估指标)或标量列表(如果模型计算其他指标)。 属性 model.metrics_names 将提供标量输出的显示标签。

keras笔记-mnist数据集上的简单训练相关推荐

  1. tensorflow(七)实现mnist数据集上图片的训练和测试

    本文使用tensorflow实现在mnist数据集上的图片训练和测试过程,使用了简单的两层神经网络,代码中涉及到的内容,均以备注的形式标出. 关于文中的数据集,大家如果没有下载下来,可以到我的网盘去下 ...

  2. 【Pytorch分布式训练】在MNIST数据集上训练一个简单CNN网络,将其改成分布式训练

    文章目录 普通单卡训练-GPU 普通单卡训练-CPU 分布式训练-GPU 分布式训练-CPU 租GPU服务器相关 以下代码示例基于:在MNIST数据集上训练一个简单CNN网络,将其改成分布式训练. 普 ...

  3. DL之DCGNN:基于TF利用DCGAN实现在MNIST数据集上训练生成新样本

    DL之DCGNN:基于TF利用DCGAN实现在MNIST数据集上训练生成新样本 目录 输出结果 设计思路 实现部分代码 说明:所有图片文件丢失 输出结果 更新-- 设计思路 更新-- 实现部分代码 更 ...

  4. 在MNIST数据集上训练一个手写数字识别模型

    使用Pytorch在MNIST数据集上训练一个手写数字识别模型, 代码和参数文件 可下载 1.1 数据下载 import torchvision as tvtraining_sets = tv.dat ...

  5. autoencoder自编码器原理以及在mnist数据集上的实现

    Autoencoder是常见的一种非监督学习的神经网络.它实际由一组相对应的神经网络组成(可以是普通的全连接层,或者是卷积层,亦或者是LSTMRNN等等,取决于项目目的),其目的是将输入数据降维成一个 ...

  6. 使用mnist数据集_使用MNIST数据集上的t分布随机邻居嵌入(t-SNE)进行降维

    使用mnist数据集 It is easy for us to visualize two or three dimensional data, but once it goes beyond thr ...

  7. 基于Keras搭建mnist数据集训练识别的Pipeline

    搭建模型 import tensorflow as tf from tensorflow import keras# get data (train_images, train_labels), (t ...

  8. Pytorch 实现全连接神经网络/卷积神经网络训练MNIST数据集,并将训练好的模型在制作自己的手写图片数据集上测试

    使用教程 代码下载地址:点我下载 模型在训练过程中会自动显示训练进度,如果您的pytorch是CPU版本的,代码会自动选择CPU训练,如果有cuda,则会选择GPU训练. 项目目录说明: CNN文件夹 ...

  9. 将MNIST数据集转换成.jpg图片

    MNIST数据集简介 # MNIST 数据集合共包含70000张手写数字图片 # 其中60000张用作训练集 # 10000张用作预测集 # 数据集包含了0-9共10类手写数字图片,每张 # 图片都做 ...

最新文章

  1. List循环添加对象时遇到问题的解决
  2. jQuery如果选中复选框
  3. 【Tools】MarkDown教程(一)-MarkDown简介
  4. Can't create handler inside thread that has not called Looper.prepare() 解决办法
  5. 线性表--算法设计题2.29
  6. 网页版的svn怎样同步代码_学会使用Hdlbits网页版Verilog代码仿真验证平台
  7. 理解正确的日志输出级别
  8. html字居右垂直设置,css文字水平垂直居中怎么设置?
  9. 对中文语法的编程语言的质疑与回应
  10. 突发!Intel CEO 换帅,VMware CEO 将走马上任
  11. 计算机有关的科技论文题目,计算机前沿科技论文选题范文 计算机前沿科技专业论文题目如何拟...
  12. ASAP光学设计软件
  13. 如何找到mysql的初始密码_如何查看mysql的初始密码
  14. 分享一个微信扫码连wifi项目
  15. Delaunay三角网构建,并进行可视化
  16. ArcEngine编辑模块——将线段按距离、按比例分割成N条线段
  17. 【PS实例】照片拼图的制作
  18. linux服务器无法识别u盘,linux系统下不能识别U盘
  19. 根据指定字符拆分字符串
  20. 赶紧注册你的@live.xx邮箱吧!

热门文章

  1. 添加CAB最大压缩到右键菜单
  2. 前端 学习笔记day47 其他标签
  3. 设置eclipse的Maven插件引入依赖jar包后自动下载并关联相应的源码(转)
  4. [SoapUI] Mock Service
  5. MyEclipse快捷键两篇文章
  6. /a.out , nohut ./a.out , nohup ./a.out 的区别
  7. Windows下Eclipse 安装 SVN 插件的两种方法
  8. Jmeter 测试结果分析之聚合报告简介
  9. 未能加载文件或程序集_完美解决未能正确加载Visual C++资源编辑器包问题
  10. vue过滤器的那点事