k8s pod使用iscsi块存储

Kubernetes接入iSCSI存储 本文简单介绍了k8s集群集成外部iSCSI存储的过程。数据存储使用的是浪潮AS5300G2设备。该设备是以iSCSI接口对外提供存储服务。 阅读详情

k8s pod使用iscsi块存储

一、iscsi设备建立块存储

本例子iscsi设备为tgtd+lvm

lvcreate -V 1G -T volgrp/lvpool -n node4   #添加块设备
[root@target ~]# lvs
node4  volgrp Vwi-aotz--   1.00g lvpool        4.79 

配置/etc/tgt/targets.conf添加以下配置

<target iqn.2001-04.com.example:storage.kube.sys1.xyz>
    backing-store /dev/volgrp/node4
    initiator-address 192.168.3.71
    initiator-address 192.168.3.74
    initiator-address 192.168.3.75
</target>

重启服务

systemctl restart tgtd.service

二、k8s pod挂载

编辑yaml文件iscsipod.yaml

---
apiVersion: v1
kind: Pod
metadata:
  name: iscsipd
spec:
  containers:
  - name: iscsipd-rw
    image: httpd
    volumeMounts:
    - mountPath: "/mnt"
      name: iscsipd-rw
  volumes:
  - name: iscsipd-rw
    iscsi:
      targetPortal: 192.168.3.4:3260
      portals: ['192.168.3.4:3260']
      iqn: iqn.2001-04.com.example:storage.kube.sys1.xyz
      lun: 1
      fsType: ext4
      readOnly: true

执行:

kubectl apply -f iscsipod.yaml

查看pod的信息:

 kubectl describe pod iscsipd
Name:         iscsipd
Namespace:    default
Priority:     0
Node:         k8s-worker02/192.168.3.75
Start Time:   Tue, 23 Feb 2021 16:53:19 +0800
Labels:       <none>
Annotations:  cni.projectcalico.org/podIP: 10.255.2.9/32
Status:       Running
IP:           10.255.2.9
IPs:
  IP:  10.255.2.9
Containers:
  iscsipd-rw:
    Container ID:   docker://bc10d08edcca5a04ba423dfe9b3932dad73da2174641d78d95a8b2abe778490e
    Image:          httpd
    Image ID:       docker-pullable://httpd@sha256:2fab99fb3b1c7ddfa99d7dc55de8dad0a62dbe3e7c605d78ecbdf2c6c49fd636
    Port:           <none>
    Host Port:      <none>
    State:          Running
      Started:      Tue, 23 Feb 2021 16:53:50 +0800
    Ready:          True
    Restart Count:  0
    Environment:    <none>
    Mounts:
      /mnt from iscsipd-rw (rw)
      /var/run/secrets/kubernetes.io/serviceaccount from default-token-88ss9 (ro)
Conditions:
  Type              Status
  Initialized       True 
  Ready             True 
  ContainersReady   True 
  PodScheduled      True 
Volumes:
  iscsipd-rw:
    Type:               ISCSI (an ISCSI Disk resource that is attached to a kubelet's host machine and then exposed to the pod)
    TargetPortal:       192.168.3.4:3260
    IQN:                iqn.2001-04.com.example:storage.kube.sys1.xyz
    Lun:                1
    ISCSIInterface      default
    FSType:             ext4
    ReadOnly:           true
    Portals:            [192.168.3.4:3260]
    DiscoveryCHAPAuth:  false
    SessionCHAPAuth:    false
    SecretRef:          nil
    InitiatorName:      <none>
  default-token-88ss9:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  default-token-88ss9
    Optional:    false
QoS Class:       BestEffort
Node-Selectors:  <none>
Tolerations:     node.kubernetes.io/not-ready:NoExecute for 300s
                 node.kubernetes.io/unreachable:NoExecute for 300s
Events:
  Type    Reason                  Age    From                     Message
  ----    ------                  ----   ----                     -------
  Normal  Scheduled               8m5s   default-scheduler        Successfully assigned default/iscsipd to k8s-worker02
  Normal  SuccessfulAttachVolume  8m5s   attachdetach-controller  AttachVolume.Attach succeeded for volume "iscsipd-rw"
  Normal  Pulling                 7m36s  kubelet, k8s-worker02    Pulling image "httpd"
  Normal  Pulled                  7m35s  kubelet, k8s-worker02    Successfully pulled image "httpd"
  Normal  Created                 7m34s  kubelet, k8s-worker02    Created container iscsipd-rw
  Normal  Started                 7m34s  kubelet, k8s-worker02    Started container iscsipd-rw
  
 kubectl get pod -o wide
iscsipd                                      1/1     Running             0          9m31s   10.255.2.9     k8s-worker02   <none>           <none>

在k8s-worker02查看挂载情况

[root@k8s-worker02 ~]# lsscsi 
[2:0:0:0]    disk    ATA      QEMU HARDDISK    3     /dev/sda 
[8:0:0:0]    storage IET      Controller       0001  -        
[8:0:0:1]    disk    IET      VIRTUAL-DISK     0001  /dev/sdb 

# lsblk 
NAME            MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda               8:0    0   200G  0 disk 
├─sda1            8:1    0     1G  0 part /boot
└─sda2            8:2    0 153.9G  0 part 
  ├─centos-root 253:0    0   150G  0 lvm  /
  └─centos-swap 253:1    0   3.9G  0 lvm  
sdb               8:16   0     1G  0 disk /var/lib/kubelet/pods/c1fee497-392f-4a9e-b9ab-cc49d3cb2538/volumes/kubernetes.io~iscsi/iscsipd-rw

df -hT | grep iscsi
/dev/sdb                ext4      976M  2.6M  958M    1% /var/lib/kubelet/pods/c1fee497-392f-4a9e-b9ab-cc49d3cb2538/volumes/kubernetes.io~iscsi/iscsipd-rw

进入pod

# kubectl exec -it iscsipd bash
kubectl exec [POD] [COMMAND] is DEPRECATED and will be removed in a future version. Use kubectl kubectl exec [POD] -- [COMMAND] instead.
root@iscsipd:/usr/local/apache2# 
root@iscsipd:/usr/local/apache2# 
root@iscsipd:/usr/local/apache2# ls
bin  build  cgi-bin  conf  error  htdocs  icons  include  logs  modules
root@iscsipd:/usr/local/apache2# ls /
bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
root@iscsipd:/usr/local/apache2# lsblk
NAME            MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda               8:0    0   200G  0 disk 
|-sda1            8:1    0     1G  0 part 
`-sda2            8:2    0 153.9G  0 part 
  |-centos-root 253:0    0   150G  0 lvm  /etc/hosts
  `-centos-swap 253:1    0   3.9G  0 lvm  
sdb               8:16   0     1G  0 disk /mnt
root@iscsipd:/usr/local/apache2# cd /mnt
root@iscsipd:/mnt# echo "wangjinxiong" >> wangjinxiong.txt 
root@iscsipd:/mnt# cat wangjinxiong.txt 
wangjinxiong

https://github.com/kubernetes/examples/tree/master/volumes/iscsi

为k8s部署openebs的cstor分布式存储及nfs实现rwx OpenEBS 是一款使用 Go 语言编写的基于容器的块存储开源软件。 OpenEBS 使得在容器中运行关键性任务和需要数据持久化的负载变得更可靠。 阅读详情

相关推荐

云原生时代:块存储在Kubernetes中的集成与应用

在云原生技术栈中,Kubernetes(K8s)已成为容器编排的事实标准。随着微服务架构和分布式系统的普及,状态化应用(如数据库、大数据平台)对存储的需求从简单文件存储转向高性能、低延迟的块存储。本文聚焦块存储在K8s中的集成机制,解析容器存储接口(CSI)如何实现存储厂商与K8s的解耦,探讨动态卷供应、多租户管理、性能优化等核心问题,为企业级云原生应用提供存储层设计指南。核心概念:解析块存储特性、K8s存储模型及CSI架构技术原理:动态卷供应算法、存储性能数学模型实战指南。

AI天才研究院 881

k8s集群新增计算节点使用华为iscsi存储创建的pvc存储挂载报错:FailedMount

k8s集群新增计算节点使用华为iscsi存储创建的pvc存储挂载报错:FailedMount

jiang0615csdn的博客 1245

Kubernetes+iscsi轻量级有状态服务实战:containerd与Calico部署指南

Kubernetes 是云原生时代容器编排的事实标准,而有状态应用(如数据库、监控系统)的可靠运行依赖于稳定、低延迟的块存储抽象。iscsi 作为成熟稳定的 SCSI 协议网络化实现,相比 NFS 更适合高并发写入与数据一致性要求严格的场景;结合 containerd 运行时(轻量、原生、无 dockershim 依赖)和 Calico 网络插件(纯三层、策略精细、单节点零损耗),可构建资源受限环境下的生产级微型云平台。该技术组合广泛应用于职业院校技能大赛、国产化信创适配及中小企业边缘私有云建设,尤其适合单

weixin_32715349的博客 346

k8s之存储

k8s存储

weixin_60552163的博客 1488

【k8s存储--使用OpenEBS做持久化存储】

使用OpenEBS,你可以将有持久化数据的容器,像对待其他普通容器一样来对待。

嘻哈记的运维学习之路 3031

K8s与iSCSI深度协同实战:国赛级存储挂载避坑指南

iSCSI是一种广泛使用的块级网络存储协议,常用于企业核心数据库、ERP等对低延迟和强一致性要求严苛的场景;Kubernetes则通过PersistentVolume抽象层对接外部存储,但原生支持存在诸多隐性断点。当二者在混合云或信创环境中(如麒麟V10、CentOS 7.6)深度集成时,会暴露出Session生命周期错位、CHAP双向认证缺失、Multipath设备识别失败、containerd设备白名单限制、Calico网络策略误杀等关键问题。这些问题直接影响Pod存储挂载成功率与高可用性,尤其在国赛等

weixin_33483304的博客 295

K8S初级入门系列之九-共享存储

本章节我们介绍了K8S的共享存储。1、同一Pod的容器间共享存储,可以使用EmptyDir。2、同一节点的Pod的共享存储,可以使用HostPath。3、不同节点间Pod的共享存储,可以使用云计算厂商提供的特定存储,也可以使用标准的网络文件存储,这里重点介绍了NFS。4、为了解耦开发和运维人员的工作,K8S设计了PV和PVC,运维人员根据资源总量,申明式创建大量的PV,预先分配,开发人员提交PVC申请,K8S根据申请的资源,自动找到合适的PV,并进行绑定和实际资源分配。

恰恰虎的博客 3302

为什么我不推荐生产环境用MinIO?K8S存储选型深度对比

本文深入对比了MinIO、NFS和Ceph在Kubernetes生产环境中的存储选型。通过性能实测与架构原理分析,指出MinIO作为对象存储,其高延迟和最终一致性模型不适合数据库等核心应用,而应根据具体场景选择Ceph RBD(高性能块存储)或NFS(文件共享)。文章为K8S后端存储选型提供了清晰的决策框架和避坑指南。

potato的博客 1485

智汇华云 | 通过iscsi为容器提供存储

介绍 将远端的存储通过iscsi协议为容器提供块存储,是一种通用的容器存储解决方案,下面将通过kubernetes中的in-tree方式来演示该例子,并分析其中的细节。 iSCSI协议是C/S架构,client是iSCSI initiator,server端为iSCSI target。iSCSI协议的主要功能是利用TCP/IP网络,在主机系统(可称为initiator)和目标存储设备(称为target)之间进行大量的数据封装和可靠传输过程。主要分成两个组成部分,分别为iSCSI服务器端和iSCSI客户端 i

huayun2020的博客 215

微信小程序反编译实战:用wxappUnpacker获取他人源码的完整流程(附常见报错解决方案)

本文详细解析了微信小程序反编译的完整流程,从缓存提取到源码重构,使用wxappUnpacker工具链实现逆向工程。涵盖环境配置、解密反编译、项目调试等关键步骤,并提供了常见报错解决方案,帮助开发者学习优秀实现方案或进行安全审计。

weixin_42706667的博客 469

STM32CubeMX+FreeRTOS+CAN总线+传感器实战:多任务系统与通信融合开发详解

本文详细介绍了基于STM32CubeMX和FreeRTOS的CAN总线与光电传感器融合开发实战。通过多任务系统设计,实现传感器数据采集与CAN通信的协同工作,提供完整的配置例程和调试技巧,适用于工业控制与机器人感知等应用场景。

n2o3p4的博客 735

用 bama 的 build-and-verify 技能完成 macOS SwiftUI 应用的构建、快照与验收

在 bama 的技能体系里,“改完代码”并不等于“改完了”。`build-and-verify` 技能定义了 macOS SwiftUI 应用的交付验收闭环:从命令行构建并安装应用,用快照模式遍历每个页面在浅色/深色下的渲染结果,跑网格检查,最后确认交互行为——四件事全部成立,一个 UI 变更才允许被标记为完成。本文以 [skills/ship/build-and-verify/SKILL.md]

gitblog_00588的博客 162

在VSCode中使用LaTex+(grammarly语法检测,chatgpt翻译,Sumatra PDF 轻量级pdf阅读器)

整个文章分为以下几个内容,打 * 的是必须要安装的。

u011895157的博客 2万+

从零开始:在Kubernetes中配置iSCSI存储的完整指南(含避坑技巧)

本文提供了在Kubernetes集群中配置iSCSI存储的完整实战指南。从节点端iSCSI发起端配置、存储设备映射,到K8s中创建持久卷(PV)、持久卷声明(PVC)并挂载至Pod,详细拆解了每一步操作。文章重点分享了网络配置、参数匹配、多路径处理等关键避坑技巧,并探讨了生产环境下的性能调优与监控考量,帮助运维人员高效整合传统企业存储资源。

jj890的博客 185

PCL点云库入门(第6讲)——PCL库中Eigen数学工具库的基本使用(持续更新)

Eigen库是一个高性能的C++模板库,专注于线性代数、矩阵和向量运算,以及相关的数值分析和算法。在Eigen库中,所有的矩阵和向量均被视为矩阵模板类的实例。向量可以被看作是特殊形式的矩阵,具体表现为只包含1行或1列。

qq_36812406的博客 1755

9.6华为OD机试真题 新系统 - 少儿爬山闯关积分游戏 (Java/Py/C/C++/Js/Go)

2026 华为OD机试真题9月6日华为OD上机新系统考试真题 100 分题型。

算法大师! 860

如何用 whisper-tiny 用 3 行代码将音频 URL 一键转为文字?完整示例解析

whisper-tiny 是一个开箱即用的轻量级语音识别模型,基于 Transformers.js 运行,只需 3 行代码即可把任意音频 URL 一键转写为文字。本文将完整解析这段示例的每一行含义、模型文件的组织方式,以及新手常见的进阶参数配置,帮助你快速上手音频转文字场景。 ## 一、whisper-tiny 是什么?为什么选它? whisper-tiny 是 Whisper 系列中**最小

gitblog_00594的博客 744

基于Simulink的电动汽车电池管理系统热管理优化仿真

电动汽车电池管理系统(Battery Management System, BMS)中的热管理是确保电池性能、安全性和寿命的关键环节。温度过高或过低都会显著影响电池的工作效率和寿命,因此需要对电池组进行精确的热管理。基于MATLAB/Simulink的仿真平台可以用于建模和优化电池热管理系统,包括热分布预测、冷却策略设计以及热平衡控制等。本项目旨在构建一个完整的电动汽车电池热管理优化仿真模型,并通过仿真验证系统的性能。

xiaoheshang_123的博客 462

Kubernetes 持久化块存储实战:OpenEBS 架构解析与集群部署指南(kubernetes-handbook)

OpenEBS 是一款使用 Go 语言编写的、基于容器的块存储开源软件,本文以 [practice/openebs.md](https://link.gitcode.com/i/21f62431991ad58a0e7c3c62ffb2bfe0) 为核心脉络,结合本仓库 [manifests/openebs](https://link.gitcode.com/i/2942c7158681f7f23f

gitblog_00877的博客 435

VTK API 详解(103):vtkGPUVolumeRayCastMapper - GPU加速体绘制

是 VTK 中基于 GPU 的高效体绘制映射器,利用现代显卡的计算能力,通过射线投射算法实现快速且高质量的三维体积渲染。相比 CPU 版本的,GPU 映射器性能大幅提升,支持更复杂的光照和渲染效果,是体绘制的主流选择。是 VTK 中性能优异的GPU体绘制映射器;适合大数据集和实时交互应用;配合灵活设置颜色、透明度和光照;建议在支持OpenGL的环境中使用。

yumeiguo的博客 295

RK3568下MIPI屏幕调试技巧

通过合理配置设备树节点、精确计算像素时钟并完成编译烧录,可高效实现RK3568平台MIPI屏幕的点亮与显示调试。关键在于严格遵循屏幕规格书参数,结合内核日志定位问题,逐步优化时序配置。掌握这一流程后,开发者可快速适配不同分辨率、刷新率的MIPI屏幕,为嵌入式系统显示模块开发奠定基础。如果在调试中遇到特定问题(如驱动匹配失败、时钟计算误差),建议优先查阅屏幕规格书和RK3568芯片手册,或通过内核社区(如Linux-DRI邮件列表)获取支持。

文石_2009的博客 1205

Longhorn 官方 Helm Chart 部署指南:Kubernetes 分布式块存储的安装、配置与卸载

本文以 Longhorn 项目仓库中的 [chart/app-readme.md](https://link.gitcode.com/i/f06dbbc0e6c835642f29d92dca2fea22) 与 [chart/README.md](https://link.gitcode.com/i/eee0f9a64c0db7c270c50ba24a4f9d49) 为核心,系统讲解如何通过官方 H

gitblog_00900的博客 610

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

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

NFS、Ceph、iSCSI 是常见的网络存储方式

使用场景推荐存储类型简单共享目录NFS高性能块存储(数据库)云平台对象/块/文件统一Ceph 全套多Pod共享可写目录云原生弹性动态供给如你有特定的使用场景(例如:Kubernetes 持久化存储、虚拟化平台、备份归档等),我可以进一步按场景给出选择建议或架构设计。需要深入对比某一项也可以告诉我。

喝醉酒的小白 1107

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

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

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Kubernetes介绍以及核心概念

简单介绍K8S中的重要概念

bltyu2000的博客 1022

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

上一篇: 离线部署kubesphere
下一篇: k8s对接群晖synology-csi使用块存储
cloud_engineer
博客等级 码龄5年 9390粉丝 65原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值