训练MNIST数据集模型

使用MNIST数据集训练手写数字识别模型 MNIST 数据集(手写数字数据集)是一个公开的公共数据集,任何人都可以免费获取它。目前,它已经是一个作为机器学习入门的通用性特别强的数据集之一,所以对于想要学习机器学习分类的、深度神经网络分类的、图像识别与处理的小伙伴,都可以选择MNIST数据集入门。 阅读详情

1. 数据集准备


   详细信息见: Caffe: LMDB 及其数据转换


mnist是一个手写数字库,由DL大牛Yan LeCun进行维护。mnist最初用于支票上的手写数字识别, 现在成了DL的入门练习库。征对mnist识别的专门模型是Lenet,算是最早的cnn模型了。

mnist数据训练样本为60000张,测试样本为10000张,每个样本为28*28大小的黑白图片,手写数字为0-9,因此分为10类。


1)数据可以从MNIST官网上下载)

2)或者执行如下命令

$CAFFE_ROOT表示源代码的根目录

cd $CAFFE_ROOT
./data/mnist/get_mnist.sh

运行成功后,在 data/mnist/目录下有四个文件:
train-images-idx3-ubyte:  训练集样本 (9912422 bytes) 
train-labels-idx1-ubyte:  训练集对应标注 (28881 bytes) 
t10k-images-idx3-ubyte:   测试集图片 (1648877 bytes) 
t10k-labels-idx1-ubyte:   测试集对应标注 (4542 bytes)

这些数据不能在caffe中直接使用,需要转换成LMDB数据
./examples/mnist/create_mnist.sh
下载成功会有如下两个数据集:/data/mnist-train-leveldb 和 /data/mnist-test-leveldb.

 

2.LeNet: MNIST 分类模型的训练和测试

2.1 LeNet分类模型

使用LeNet模型网络来训练,是数字识别的好模型。The design of LeNet contains the essence of CNNs that are still used in larger models such as the ones in ImageNet. In general, it consists of a convolutional layer followed by a pooling layer, another convolution layer followed by a pooling layer, and then two fully connected layers similar to the conventional multilayer perceptrons. We have defined the layers in `$CAFFE_ROOT/examples/mnist/lenet_train_test.prototxt`.

2.2 MNIST网络结构定义

此处解释MNIST手写数字识别LeNet模型的定义 `lenet_train_test.prototxt`,Caffe中使用的protobuf 定义在 `$CAFFE_ROOT/src/caffe/proto/caffe.proto`中.接下来将会写一个protobuf定义:`caffe::NetParameter` (或者Python形式, `caffe.proto.caffe_pb2.NetParameter`) .

 开始,先定义一个网络名字:
    name: "LeNet"

2.2.1 数据层

demo中从lmdb创建的MNIST数据,通过一个数据层定义:
    layer {
      name: "mnist"
      type: "Data"
      transform_param {
        scale: 0.00390625
      }
      data_param {
        source: "mnist_train_lmdb"
        backend: LMDB
        batch_size: 64
      }
      top: "data"
      top: "label"
    }

本层有一个属性name `mnist`, type `data`,数据读取自 lmdb. batch的大小为64, 并且会对incoming pixels进行scale保证范围在 [0,1). 为什么是 0.00390625?这个值等于 1除以256. 最终, 该层生成两个blobs, 一个是 `data` blob, 另一个是 `label` blob.

2.2.2 卷积层

卷机层定义:
    layer {
      name: "conv1"
      type: "Convolution"
      param { lr_mult: 1 }
      param { lr_mult: 2 }
      convolution_param {
        num_output: 20
        kernel_size: 5
        stride: 1
        weight_filler {
          type: "xavier"
        }
        bias_filler {
          type: "constant"
        }
      }
      bottom: "data"
      top: "conv1"
    }

本层使用数据层提供的 `data` blob , 并产生 `conv1` 层. 产生 20个通道的输出, 卷积核大小5 and carried out with stride 1.
The fillers允许可以随机初始化weights和bias的值. 对于 weight filler, 使用`xavier` 算法给予神经元的输入和输出的数量自动地决定初始化的scale.对于 bias filler, 将会简单的初始化为常量t,默认为0.
`lr_mult`为层中参数的学习率调节器.当前权因子的学习率和运行时solver给定的学习率一样, bias的学习率为权因子学习率的两倍可以获得较好的收敛速度.


2.2.3 Pooling 层


Pooling是较容易定义的:

    layer {
      name: "pool1"
      type: "Pooling"
      pooling_param {
        kernel_size: 2
        stride: 2
        pool: MAX
      }
      bottom: "conv1"
      top: "pool1"
    }
max pooling 核的大小为2,stride 为 2 (所以相邻的pooling区域没有重叠).
类似的,可以写出第二个 convolution 和 pooling 层. 详见 `$CAFFE_ROOT/examples/mnist/lenet_train_test.prototxt`

2.2.4 全连接层(Fully Connected Layer)


写一个全连接层很简单:

    layer {
      name: "ip1"
      type: "InnerProduct"
      param { lr_mult: 1 }
      param { lr_mult: 2 }
      inner_product_param {
        num_output: 500
        weight_filler {
          type: "xavier"
        }
        bias_filler {
          type: "constant"
        }
      }
      bottom: "pool2"
      top: "ip1"
    }

T这样定义了一个全链接层(Caffe中称为`InnerProduct`层) 有 500个输出.所有其他行和之前的很相似对么?

2.2.5 ReLU 层


ReLU 层也很简单:

    layer {
      name: "relu1"
      type: "ReLU"
      bottom: "ip1"
      top: "ip1"
    }

因为 ReLU是一个element-wise 操作, 我们可以做 *in-place* 操作节省内存. This is achieved by simply giving the same name to the bottom and top blobs. 当然, 不要使用重复的blob名字 for other layer types!

ReLU 层后, 我们将会写另一个 innerproduct layer:

    layer {
      name: "ip2"
      type: "InnerProduct"
      param { lr_mult: 1 }
      param { lr_mult: 2 }
      inner_product_param {
        num_output: 10
        weight_filler {
          type: "xavier"
        }
        bias_filler {
          type: "constant"
        }
      }
      bottom: "ip1"
      top: "ip2"
    }

2.2.6 Loss 层


最后, loss层

    layer {
      name: "loss"
      type: "SoftmaxWithLoss"
      bottom: "ip2"
      bottom: "label"
    }

 `softmax_loss` 层移植了 softmax 和  multinomial logistic loss (that saves time and improves numerical stability). 使用了两个blobs, 第一个being the prediction and第二个being the `label` provided by the data layer (remember it?). 这并不产生任何输出,只是用来计算损失函数的值, report it when backpropagation starts, and initiates the gradient with respect to `ip2`. This is where all magic starts.


2.2.7 备注:写层的规则

Layer 的定义可以包含是否或者什么时候被包含在网络定义中的规则, 例如下面这个例子:

    layer {
      // ...layer definition...
      include: { phase: TRAIN }
    }

这是一个规则, 基于网络的state controls layer inclusion in the network.
You can refer to `$CAFFE_ROOT/src/caffe/proto/caffe.proto` for more information about layer rules and model schema.

上面的这个例子, 该层只会被包含在 `TRAIN` phase.
如果改变 `TRAIN` 为 `TEST`,该层只会使用在test phase.

默认的, 层是没有规则的,一个层通常包含在网络中.
Thus, `lenet_train_test.prototxt` has two `DATA` layers defined (with different `batch_size`), one for the training phase and one for the testing phase.
Also, there is an `Accuracy` layer which is included only in `TEST` phase for reporting the model accuracy every 100 iteration, as defined in `lenet_solver.prototxt`.


整体解释如下:


#网络名称
name: "LeNet"
#train数据层
#输入源:mnist_train_ldmb,batch_size:64
#输出:data blob,label blob
#数据变换:scale归一化,0.00390625=1/255
layer {
  name: "mnist"
  type: "Data"
  top: "data"
  top: "label"
  include {
    phase: TRAIN
  }
  transform_param {
    scale: 0.00390625
  }
  data_param {
    source: "examples/mnist/mnist_train_lmdb"
    batch_size: 64
    backend: LMDB
  }
}
#test数据层
#输入源:mnist_test_ldmb,batch_size:100
#输出:data blob,label blob
#数据变换:scale归一化
layer {
  name: "mnist"
  type: "Data"
  top: "data"
  top: "label"
  include {
    phase: TEST
  }
  transform_param {
    scale: 0.00390625
  }
  data_param {
    source: "examples/mnist/mnist_test_lmdb"
    batch_size: 100
    backend: LMDB
  }
}
#卷积层conv1
#输入数据:data blob
#输出数据:conv1 blob
#卷积层参数:20个5*5的特征卷积核,步长为1,卷积核的权重初始化方式为xavier,偏置的初始化方式为constant,常量默认为0
#该层学习率:权重学习率为基学习率base_lr的1倍,偏置学习率为base_lr的两倍
layer {
  name: "conv1"
  type: "Convolution"
  bottom: "data"
  top: "conv1"
  param {
    lr_mult: 1
  }
  param {
    lr_mult: 2
  }
  convolution_param {
    num_output: 20
    kernel_size: 5
    stride: 1
    weight_filler {
      type: "xavier"
    }
    bias_filler {
      type: "constant"
    }
  }
}
#池化层pool1
#输入数据:conv1 blob
#输出数据:pool1 blob
#池化方式及参数:Max pool,2*2的池化核,步长为2
layer {
  name: "pool1"
  type: "Pooling"
  bottom: "conv1"
  top: "pool1"
  pooling_param {
    pool: MAX
    kernel_size: 2
    stride: 2
  }
}

layer {
  name: "conv2"
  type: "Convolution"
  bottom: "pool1"
  top: "conv2"
  param {
    lr_mult: 1
  }
  param {
    lr_mult: 2
  }
  convolution_param {
    num_output: 50
    kernel_size: 5
    stride: 1
    weight_filler {
      type: "xavier"
    }
    bias_filler {
      type: "constant"
    }
  }
}
layer {
  name: "pool2"
  type: "Pooling"
  bottom: "conv2"
  top: "pool2"
  pooling_param {
    pool: MAX
    kernel_size: 2
    stride: 2
  }
}

#全连接层ip1
#输入数据:pool2 blob
#输出数据:ip1 blob
#全连接层参数:500个节点,权值初始化方式为xavier,偏置初始化方式为constant,默认为0
#学习率:权重学习率为base_lr,偏置学习率为base_lr*2

 layer {
  name: "ip1"
  type: "InnerProduct"
  bottom: "pool2"
  top: "ip1"
  param {
    lr_mult: 1
  }
  param {
    lr_mult: 2
  }
  inner_product_param {
    num_output: 500
    weight_filler {
      type: "xavier"
    }
    bias_filler {
      type: "constant"
    }
  }
}
#非线性激活层relu1
#输入数据:ip1 blob
#输出数据:ip1 blob(注意仍然是ip1,由于relu是对每个点操作,输出也是对应个点的值,这样做便于省内存)
layer {
  name: "relu1"
  type: "ReLU"
  bottom: "ip1"
  top: "ip1"
}
#全连接层ip2
#输入数据:ip1 blob
#输出数据:ip2 blob(此网络输出也即用于最终预测的输出)
layer {
  name: "ip2"
  type: "InnerProduct"
  bottom: "ip1"
  top: "ip2"
  param {
    lr_mult: 1
  }
  param {
    lr_mult: 2
  }
  inner_product_param {
    num_output: 10
    weight_filler {
      type: "xavier"
    }
    bias_filler {
      type: "constant"
    }
  }
}
#精确度计算层accuracy,只在test阶段有用
#输入数据:ip2 blob,label accuracy
#输出数据:accuracy
layer {
  name: "accuracy"
  type: "Accuracy"
  bottom: "ip2"
  bottom: "label"
  top: "accuracy"
  include {
    phase: TEST
  }
}
# 损失函数层:SoftmaxWithLoss类型的loss
# 数据输入:ip2 blob, label blob
# 数据输出:loss blob,最终损失
layer {
  name: "loss"
  type: "SoftmaxWithLoss"
  bottom: "ip2"
  bottom: "label"
  top: "loss"
}



3 定义 MNIST Solver


Check out the comments explaining each line in the prototxt `$CAFFE_ROOT/examples/mnist/lenet_solver.prototxt`:

    # The train/test net protocol buffer definition
    net: "examples/mnist/lenet_train_test.prototxt"
    # test_iter specifies how many forward passes the test should carry out.
    # In the case of MNIST, we have test batch size 100 and 100 test iterations,
    # covering the full 10,000 testing images.
    test_iter: 100
    # Carry out testing every 500 training iterations.
    test_interval: 500
    # The base learning rate, momentum and the weight decay of the network.
    base_lr: 0.01
    momentum: 0.9
    weight_decay: 0.0005
    # The learning rate policy
    lr_policy: "inv"
    gamma: 0.0001
    power: 0.75
    # Display every 100 iterations
    display: 100
    # The maximum number of iterations
    max_iter: 10000
    # snapshot intermediate results
    snapshot: 5000
    snapshot_prefix: "examples/mnist/lenet"
    # solver mode: CPU or GPU
    solver_mode: GPU


解释如下:

# 网络结构
net: "examples/mnist/lenet_train_test.prototxt"
# 此时validation总样本数test_iter*batch_size
test_iter: 100
# 每500次训练迭代进行依次validation迭代
test_interval: 500
#初始学习率,基学习率
base_lr: 0.01
momentum: 0.9
weight_decay: 0.0005
# 学习率变化策略
lr_policy: "inv"
gamma: 0.0001
power: 0.75
# 每100次迭代显示一次loss等参数,包括训练与验证
display: 100
# 最多迭代次数
max_iter: 10000
# 每5000次迭代进行一次模型存储,防止意外中断
snapshot: 5000
snapshot_prefix: "examples/mnist/lenet"
# 训练和测试模式
solver_mode: GPU



4 训练和测试模型


写完network definition protobuf and solver protobuf后. 直接运行 `train_lenet.sh`, 或者按照如下命令:

    cd $CAFFE_ROOT
    ./examples/mnist/train_lenet.sh

`train_lenet.sh` 是一个简单的脚本, but here is a quick explanation: the main tool for training is `caffe` with action `train` and the solver protobuf text file as its argument.


When you run the code, you will see a lot of messages flying by like this:

    I1203 net.cpp:66] Creating Layer conv1
    I1203 net.cpp:76] conv1 <- data
    I1203 net.cpp:101] conv1 -> conv1
    I1203 net.cpp:116] Top shape: 20 24 24
    I1203 net.cpp:127] conv1 needs backward computation.

These messages tell you the details about each layer, its connections and its output shape, which may be helpful in debugging. After the initialization, the training will start:

    I1203 net.cpp:142] Network initialization done.
    I1203 solver.cpp:36] Solver scaffolding done.
    I1203 solver.cpp:44] Solving LeNet

Based on the solver setting, we will print the training loss function every 100 iterations, and test the network every 500 iterations. You will see messages like this:

    I1203 solver.cpp:204] Iteration 100, lr = 0.00992565
    I1203 solver.cpp:66] Iteration 100, loss = 0.26044
    ...
    I1203 solver.cpp:84] Testing net
    I1203 solver.cpp:111] Test score #0: 0.9785
    I1203 solver.cpp:111] Test score #1: 0.0606671

For each training iteration, `lr` is the learning rate of that iteration, and `loss` is the training function. For the output of the testing phase, score 0 is the accuracy, and score 1 is the testing loss function.

And after a few minutes, you are done!

    I1203 solver.cpp:84] Testing net
    I1203 solver.cpp:111] Test score #0: 0.9897
    I1203 solver.cpp:111] Test score #1: 0.0324599
    I1203 solver.cpp:126] Snapshotting to lenet_iter_10000
    I1203 solver.cpp:133] Snapshotting solver state to lenet_iter_10000.solverstate
    I1203 solver.cpp:78] Optimization Done.

The final model, stored as a binary protobuf file, is stored at

    lenet_iter_10000

which you can deploy as a trained model in your application, if you are training on a real-world application dataset.


如果想在GPU下运行计算,只需要修改lenet_solver.prototxt文件的solver_mode即可,0是CPU,1是GPU。

    # solver mode: CPU or GPU
    solver_mode: CPU

 How to reduce the learning rate at fixed steps?

Look at lenet_multistep_solver.prototxt



【Caffe】训练MNIST数据集模型 1、准备数据。 可以从MNIST官网上下载数据,或者执行data文件夹里get_mnist.sh文件(需要安装wget或者gunzip),下载成功会有如下两个数据集: /data/mnist-train-leveldb和/data/mnist-test-leveldb.   2、训练和测试模型。 我们使用LeNet网络来训练模型,该算法是数字识别的最好方法。 LeNet网络中间层定义在 阅读详情

相关推荐

Caffe框架下的MNIST数据集处理与LeNet模型训练

MNIST数据集,作为机器学习领域中经典的手写数字识别问题的数据集,拥有着重要的地位。它包含了60,000张训练图像和10,000张测试图像,每一个图像是28x28像素的灰度图像,代表了0到9之间的数字。由于其简洁性和易于理解的特点,它成为了研究算法、尤其是深度学习技术的基准测试集。在深度学习中,数据的读取速度往往是一个瓶颈。LMDB(Lightning Memory-Mapped Database)是一个轻量级的、可靠的、单进程的键值存储数据库,它被设计用来存储大量数据,同时提供快速的读取性能。

weixin_42173218的博客 709

Tensorflow案例4:Mnist手写数字识别(线性神经网络)及其局限性

学习目标 目标 应用matmul实现全连接层的计算 说明准确率的计算 应用softmax_cross_entropy_with_logits实现softamx以及交叉熵损失计算 说明全连接层在神经网络的作用 应用全连接神经网络实现图像识别 应用 Mnist手写数字势识别 1、 数据集介绍 文件说明: train-images-idx3-ubyte.gz: training s...

yanpenggong的博客 1308

MNIST数据集处理实战:机器学习模型训练与测试

数据是机器学习和深度学习模型的基石,而MNIST数据集是众多数据集中最为经典的一个。其全称是“Modified National Institute of Standards and Technology”,是一个包含了手写数字图像的大规模数据集,共包含60,000个训练样本和10,000个测试样本。每个图像都是28x28像素的灰度图,代表了从0到9的手写数字。LeNet-5是最早的卷积神经网络之一,由Yann LeCun等人在1998年提出,用于手写数字识别任务,是深度学习历史上的一个里程碑。

weixin_28729843的博客 831

统计 MNIST 手写数字数据集中每个数字的个数

【代码】统计 MNIST 手写数字数据集中每个数字的个数。

weixin_46034990的博客 1941

告别卡顿!OBS Studio最佳录制参数设置指南(适合游戏/网课/会议场景)

本文提供OBS Studio录制参数优化指南,针对游戏、网课及会议三大场景,详细解析帧率、码率与编码器设置。重点推荐利用硬件编码器(如NVENC)实现游戏录制零卡顿,并分享清晰稳定的网课录制与长时间会议录制配置方案,助你告别视频卡顿与音画不同步问题。

e4f5g6h7的博客 1336

飞书+扣子+DeepSeek三件套:5分钟搞定公众号文章批量改写(附完整配置截图)

本文详细介绍了如何利用飞书、扣子和DeepSeek三款工具,无需编程即可搭建一个高效的公众号文章批量改写自动化工作流。通过飞书多维表格管理链接与成果,扣子平台串联整个流程,并调用DeepSeek智能体进行内容润色与改写,实现从内容抓取到智能处理的完整自动化,大幅提升新媒体运营效率。

python9snake的博客 209

五、神经网络过拟合处理方法(二):手写数字识别(Mnist)数据集

神经网络过拟合处理方法 手写数字识别(Mnist)数据集 Mnist数据集是一个手写数字识别数据集,被称为深度学习界的“Hello World”。 Mnist数据集包含: 训练集:60,000张28×28灰度图 测试集:10,000张28×28灰度图 共有0~9这10个手写数字体类别。 导入必要的模块 import tensorflow as tf from tensorflow.keras import datasets, regularizers, Input, Model from te

满目星辰 3823

牛顿法vs高斯牛顿法vs LM算法:三行代码说清核心区别(附性能对比表格)

本文通过对比牛顿法、高斯牛顿法和LM算法的核心迭代代码,揭示了三者在非线性最小二乘优化中的本质区别。LM算法通过引入阻尼因子,在高斯牛顿法的快速收敛与梯度下降的稳定性之间取得平衡,成为工程实践中鲁棒性最强的首选。文章还提供了清晰的性能对比表格,帮助开发者根据初始估计和问题性质快速选择合适算法。

weixin_29062255的博客 419

卷积神经网络笔记

卷积层:卷积层是卷积神经网络的核心部分,它通过卷积操作提取图像的特征。卷积层的代码通常包括卷积核的定义、卷积操作的实现以及激活函数的应用。 池化层:池化层用于缩小特征图的尺寸,减少计算量。常见的池化方式有最大池化和平均池化。池化层的代码通常包括池化操作的实现以及池化方式的选择。 全连接层:全连接层用于将卷积层和池化层提取的特征进行分类或回归。全连接层的代码通常包括权重矩阵的定义、矩阵乘法的实现以及激活函数的应用。 损失函数:损失函数用于衡量模型预测结果与真实标签之间的差异。常见的损失函数有交叉熵损失、

xiaodaidaiPromax_2024 135

【WorkBuddy】WorkBuddy 智能体快速上手:从零到一的实践指南

文章摘要: 传统自动化脚本难以应对灵活多变的自然语言需求,导致逻辑复杂、维护成本高。智能体(Agent)通过理解语义意图、动态决策和松耦合组件解决了这些问题。WorkBuddy采用声明式配置,通过可视化界面定义意图、实体和对话策略,无需编码即可快速构建智能体。其核心组件包括意图分类、实体提取、对话策略、故事样本和回退机制,适用于客服支持、知识问答等高频场景。通过环境准备(Python/Node.js/Redis)和简单配置,用户可以快速搭建可运行的智能体,显著提升自动化效率。

ruiqideng的博客 1670

VTK四视图联动避坑指南:解决vtkImagePlaneWidget窗宽窗位同步与切片序号更新的那些坑

本文详细解析了VTK四视图联动开发中的关键技术点与常见问题,包括切片位置同步、窗宽窗位同步的实现原理及回调机制设计。针对开发中遇到的回调事件不触发、渲染性能低下等问题,提供了实用的解决方案和优化技巧,帮助开发者高效构建医学影像和科学可视化应用。

weixin_42638178的博客 392

MNIST数据集

MNIST数据集 tensorflow实现mnist数据集的前向传播、后向传播、测试的代码 import tensorflow as tf from tensorflow import keras from tensorflow.keras import layers from tensorflow.keras import datasets import os os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2' # x: [60k, 28, 28],

dongcjava的博客 3191

AI自瞄原理剖析(四)从Yolo推理坐标到屏幕坐标:基于FOV视角与焦距的坐标变换与精准瞄准

从Yolo推理框架得到的坐标到屏幕坐标的转换是一个涉及到FOV视角、焦距以及分辨率的复杂过程。通过数学公式,我们可以将推理框坐标反推为游戏内的实际坐标,并最终映射到屏幕坐标系中。利用这些信息,AI自瞄系统能够精确计算出准星从当前位置移动到敌人位置的距离,实现精准的自动瞄准。通过这种方法,AI自瞄系统能够在不同的游戏环境下灵活应对,提供高度精确的操作体验。在AI自瞄系统中,目标检测仅仅是第一步,获取到预测框的坐标后,我们还需要将这些坐标转换为实际屏幕上的精确位置。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 1334

基于MNIST数据集完成MindSpore模型训练的入门

训练过程中会打印loss值,loss值会波动,但总体来说loss值会逐步减小,精度逐步提高。每个人运行的loss值有一定随机性,不一定完全相同。使用model.eval接口读入测试数据集。使用保存后的模型参数进行推理。可以在打印信息中看出模型精度数据,示例中精度数据达到95%以上,模型质量良好。随着网络迭代次数增加,模型精度会进一步提高。4、加载模型#加载已经保存的用于测试的模型加载参数到网络中。

weixin_43857576的博客 866

基于加速科技ST2500的SN74HC00N芯片测试计划

实际上随着工艺的进步,器件内部和引脚间的绝缘氧化膜越来越薄,导致漏电流发生的概率更大,另外制造过程中的工艺缺陷导致的桥接,异物或封装过程中造成的芯片划伤、引裂,都会造成IC的漏电流偏大,有部分产品可能会表现出漏电流偏大,但功能正常,此类产品具有潜在的可靠性问题,漏电流测试的目的就是把具有此类缺陷的产品筛选出来,避免其流到最终产品造成更大的损失。漏电流的测试方法相对简单,就是根据产品手册或测试规范对被测引脚施加额定的电压,然后测量其输入或流出的电流是否符合相应的设计规范。74HC00引脚功能如表所示。

weixin_68288412的博客 1439

dex2oat编译优化调试

dex2oat编译调试的一些技巧和方法

jidapenglin28的专栏 5046

【神经网络与深度学习】使用MNIST数据集训练手写数字识别模型——[附完整训练代码]

【神经网络与深度学习】使用MNIST数据集训练手写数字识别模型——[附完整训练代码]。发现csdn平台上似乎还没有一篇完整的介绍MNIST数据集、完整训练代码和训练好的模型文件,故发此文来对MNIST做一个详细的整合。 MNIST 数据集(手写数字数据集)是一个公开的公共数据集,任何人都可以免费获取它。目前,它已经是一个作为机器学习入门的通用性特别强的数据集之一,所以对于想要学习机器学习分类的、深度神经网络分类的、图像识别与处理的小伙伴,都可以选择MNIST数据集入门。

weixin_45954454的博客 7万+

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

tensorflow fashion_mnist数据集模型训练及预测

前面介绍mnist手写数字集训练,本文对数据集训练和预测进行简要介绍。fashion_mnist数据集和mnist数据集类似,都是28x28的灰度图片,区分是fashion_mnist数据集是服装图片。

xiao2macf的专栏 2181

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

PyTorch数据分割全流程指南:从MNIST数据集到模型训练

在机器学习项目中,数据分割是确保模型泛化能力的关键步骤。本文详细介绍了如何使用PyTorch框架对MNIST数据集进行训练集、验证集和测试集的分割,并展示了如何创建数据加载器以及将这些分割整合到模型训练流程中。通过本文,您将掌握PyTorch中数据分割的核心技术,为构建稳健的机器学习模型打下坚实基础。

neweastsun的专栏 1290

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

使用Pytorch训练一个线性模型对MNIST数据集进行分类

使用Pytorch训练一个线性模型对MNIST数据集进行分类

summerriver1的博客 657

Mnist手写数据集的模型搭建及GPU训练(基于pytorch)

1. 用意 pytorch看了有一段时间了,可是怎么熟练操作pytorch呢,于是就用手写数据集来办事,键盘滚起来! 四颗GPU训练 两个类完成训练 代码直接copy过去,立即跑通,但电脑上必须有GPU 代码直接copy过去,立即跑通但电脑上必须有GPU 代码直接copy过去,立即跑通但电脑上必须有GPU 2.结果展示 2.1 四颗GPU 2.2 训练过程 2.3 训练结果 3.代码如下 import os import random import torch import numpy as np

Joseph__Lagrange的博客 1104

线性模型训练MNIST数据集

import tensorflow as tf import numpy as np from tensorflow.examples.tutorials.mnist import input_data import matplotlib.pyplot as plt #导入MNIST数据集 mnist = input_data.read_data_sets("/tmp/data/", one_ho...

weixin_39411994的博客 425

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

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

s10001010110的博客 861

mnist数据集python导入_如何使用MNIST数据集训练机器学习模型

MNIST机器学习包含60,000个训练图像和10,000个测试图像。让我们导入所需的Python库;import numpy as npimport matplotlib.pyplot as pltimport kerasfrom keras.models import Sequentialfrom keras.datasets import mnistfrom keras.layers imp...

weixin_39950083的博客 1265
上一篇: Caffe训练ImageNet
下一篇: 快速稀疏编码算法
凌风探梅
博客等级 码龄19年 2575粉丝 113原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值