Liuli在树莓派上的配置教程

使用supervisor实现thinkphp-queue进程常驻后台· 1、Supervisor是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启。 2、详细的配置说明请参考https://www.jianshu.com/p/0b9054b33db3,下面主要说说我的配置过程。 yum安装supervisor yum install epel-release yum install supervisor //设置开机自动启动 systemctl enable supervisor... 阅读详情

本文介绍 Liuli 在树莓派上的配置部署教程

Liuli[1]的目标是帮助你一站式构建多源、干净、个性化的阅读环境,目前还在缓慢开发迭代中,欢迎更多的朋友参与进来,其当前可应用的场景有:

建议使用前看一下上面的文章,有个大概印象,接下来将根据以下方式来介绍如何在树莓派上面安装Liuli:

  • Docker 部署

  • 源码部署

PS:本项目已开源,地址见github.com/liuli-io/liuli,欢迎给个Star🤟🏻

安装 MongoDB [重要]

因为Liuli依赖MongoDB作为数据库,而在树莓派下Docker启用MongoDB有点混乱,所以这块咱就直接在系统上安装,再者因为有的朋友可能配置不是很高,都带不动Docker,到时直接源码部署的话更是要在系统上安装。

安装MongoDB:

# 升级更新
sudo apt update
sudo apt upgrade

# 在`/etc/apt/sources.list`添加软件源
wget -qO - https://www.mongodb.org/static/pgp/server-4.4.asc | sudo apt-key add -
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/4.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.4.list

# 安装MongoDB
sudo apt-get update
sudo apt-get install -y mongodb-org

# 启动
sudo systemctl daemon-reload
sudo systemctl enable mongod
sudo systemctl start mongod
# 查看状态
sudo systemctl status mongod

# 进入MongoDB
mongo

创建用户:

use admin
db.createUser(
    {
        "user": "liuli",
        "pwd": "liuli",
        "roles": [
            "userAdminAnyDatabase",
            "dbAdminAnyDatabase",
            "readWriteAnyDatabase"
        ]
    }
)
exit

配置操作sudo vim /etc/mongod.conf,改动如下:

# 修改 bindIp 为 0.0.0.0,外部可访问
net:
  port: 27017
  bindIp: 0.0.0.0
# 增加登录验证
security:
   authorization: enabled

重启生效:

sudo systemctl restart mongod

此时登录:

# 注意自己的 ip
sudo mongo --host "192.168.0.2" -u "liuli" -p "liuli"

# 查看数据库
> db.adminCommand({listDatabases: 1})

Docker 部署

总的来说,Docker部署还是比较方便的,特别针对不熟悉Python的朋友,所以把这个方式放在第一位。

安装 Docker

首先我们来安装Docker:

sudo apt-get install apt-transport-https ca-certificates software-properties-common -y

curl -fsSL https://get.docker.com -o get-docker.sh
# 如果网速慢,可以尝试:sudo sh get-docker.sh --mirror Aliyun
sudo sh get-docker.sh

# 添加密钥
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/raspbian/gpg | sudo apt-key add -

# 在`/etc/apt/sources.list`添加软件源
sudo add-apt-repository \
    "deb [arch=armhf] https://mirrors.aliyun.com/docker-ce/linux/raspbian \
    $(lsb_release -cs) \
    stable"

sudo groupadd docker
sudo usermod -aG docker $USER

# 更新
sudo apt-get update
sudo apt-get upgrade

# 刷新
newgrp docker

# 启动
sudo systemctl enable docker
sudo systemctl start docker

# 测试
sudo docker run hello-world

可以考虑引入portainer来管理:

sudo mkdir -p /data/docker_data/portainer_data
sudo docker run -d -p 8001:8000 -p 9001:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v /data/docker_data/portainer_data:/data portainer/portainer-ce

Docker 部署

接下来就是正式部署了:

# 下载 api 和 schedule 镜像
sudo docker pull liuliio/api:v0.1.3
sudo docker pull liuliio/schedule:v0.2.4

# 建立配置目录
sudo mkdir -p liuli/liuli_config
sudo touch liuli/pro.env
sudo touch liuli/liuli_config/wechat.json

先来看看pro.env配置:

PYTHONPATH=${PYTHONPATH}:${PWD}
LL_M_USER="liuli"
LL_M_PASS="liuli"
# 你的外部可访问ip
LL_M_HOST="192.168.0.2"
LL_M_PORT="27017"
LL_M_DB="admin"
LL_M_OP_DB="liuli"
LL_FLASK_DEBUG=0
LL_HOST="0.0.0.0"
LL_HTTP_PORT=8765
LL_DOMAIN=""
LL_WORKERS=1
# 上面这么多配置不用改,下面的才需要各自配置
# 是否发送通知给钉钉
LL_D_TOKEN=""
# 是否发送通知给微信
LL_WECOM_ID=""
LL_WECOM_AGENT_ID="-1"
LL_WECOM_SECRET=""
# 在你的github建立仓库 liuli_backup 即可
# 也可以不填,完全填空,也就是内容不备份到github
LL_GITHUB_TOKEN=""
LL_GITHUB_REPO="{your_github_name}/liuli_backup"
LL_GITHUB_DOMAIN="https://{your_github_name}.github.io/liuli_backup/"

请详细查看以下文档进行具体参数配置,按照流程操作,很简单:

  • 分发器配置[2]:钉钉微信配置获取教程

  • 备份器配置[3]:Github 备份器配置获取教程

  • 参数说明[4]:各个参数详细介绍

配置好后,请将以上内容写到sudo vim liuli/pro.env文件。

接下来直接配置公众号相关,直接使用Liuli官方的配置sudo vim liuli/liuli_config/wechat.json:

{
    "name": "wechat",
    "author": "liuli_team",
    "doc_source": "liuli_wechat",
    "collector": {
        "wechat": {
            "wechat_list": [
                "小众消息"
            ],
            "delta_time": 5,
            "spider_type": "sg_ruia",
            "spider_type_des": "当镜像是schedule:playwright_*时,spider_type可填写sg_playwright"
        }
    },
    "processor": {
        "before_collect": [],
        "after_collect": [{
            "func": "ad_marker",
            "cos_value": 0.6
        }, {
            "func": "to_rss",
            "doc_source_list": ["liuli_wechat"],
            "link_source": "github"

        }]
    },
    "sender": {
        "sender_list": ["wecom"],
        "query_days": 7,
        "delta_time": 3
    },
    "backup": {
        "backup_list": ["mongodb"],
        "query_days": 7,
        "delta_time": 3,
        "init_config": {},
        "after_get_content": [{
            "func": "str_replace",
            "before_str": "data-src=\"",
            "after_str": "src=\"https://images.weserv.nl/?url="
        }]
    },
    "schedule": {
        "period_list": [
            "00:10",
            "12:10",
            "21:10"
        ]
    }
}

此时文件夹目录如下:

(base) ➜  cd liuli
(base) ➜  liuli tree -L 2
.
├── liuli_config
│   └── wechat.json
└── pro.env

配置完毕,接下来就可以启动了:

# 启动 API
sudo docker run -d -it --restart=always -p 8765:8765 -v $PWD/pro.env:/data/code/pro.env --name liuli_api liuliio/api:v0.1.3
# 启动 schedule
sudo docker run -d -it --restart=always -v $PWD/pro.env:/data/code/pro.env -v $PWD/liuli_config:/data/code/liuli_config --name liuli_schedule liuliio/schedule:v0.2.4

成功日志如下:

96fd0fa80b8fa36f7c2491676a39eb0a.png

pi_liuli_logs

此时访问以下接口可进行验证:

  • 获取公众号 rss 地址: http://0.0.0.0:8765/rss/liuli_wechat/小众消息/

  • 查看目标公众号备份的文章:http://0.0.0.0:8765/backup/liuli_wechat/公众号名称/文章名称

至此,你可以订阅和查看目标公众号的文章了。

注意 ⚠️:IP 根据自身部署服务的 IP 填写

公众号 rss 地址效果:

686bd2d3c6cf609a28760bf0a7dbd5a2.png

pi_wechat

目标公众号备份文章:

555438686d63d2a5a3bdc8e39fa8b334.png

pi-wechat-html

如果需要微信消息提示,请移步:分发器配置|钉钉微信配置教程[5]

837cdb286e05ca559ec9ad67bb5ec5ce.png

源码部署

如果你是直接看的源码部署,请先阅读Docker部署部分,拷贝好以下文件:

  • wechat.json

  • pro.env

首先,下载源码:

git clone https://github.com/liuli-io/liuli.git

# 删除掉 Pipfile 里面以下行
# black = "*"
# isort = "*"
# pylint = "*"
# pytest = "*"
# pandas = "*"
# numpy = "*"
# pypinyin = "*"
# playwright = "*"

# 保证有 python3.7+ 环境
pip install pipenv
pipenv install --python {your_python3.7_path} --skip-lock --dev

# 配置
# 将上面的 pro.env 内容拷贝
vim pro.env
# 删除 liuli_config 文件夹所有内容
# 将 wechat.json 复制到 liuli_config/wechat.json

# 启动 API
bash ./start.sh api pro
# 启动 schedule
bash ./start.sh schedule pro

查看日志:

((liuli) ) (base) ➜  liuli git:(main) ✗ bash ./start.sh api pro
Start api(pro) serve: PIPENV_DOTENV_LOCATION=./pro.env pipenv run gunicorn -c src/config/gunicorn.py src.api.http_app:app
Loading .env environment variables...
[2022-04-28 15:00:50 +0800] [29074] [INFO] Starting gunicorn 20.1.0
[2022-04-28 15:00:50 +0800] [29074] [INFO] Listening at: http://0.0.0.0:8765 (29074)
[2022-04-28 15:00:50 +0800] [29074] [INFO] Using worker: gevent
[2022-04-28 15:00:50 +0800] [29079] [INFO] Booting worker with pid: 29079
[2022:04:28 15:00:54] INFO  Liuli API server(v0.1.3) started successfully :)
...

说明

上述过程参考资料如下:

  • Install & Configure MongoDB on the Raspberry Pi[6]

  • How to install Conda and Docker on your Raspberry Pi[7]

  • Docker 入门到实践-raspberry-pi[8]

  • Docker 官方文档 Install Docker Engine[9]

看到这里的朋友你好,这篇推送我试了下微信的新功能快捷私信,不知道是啥东西,大家可以帮我试试看。

使用中有任何问题,欢迎加群交流:

76cddf7e7c3902bf85155f0a7eebb2ff.png

wechat-liuli

参考资料

[1]

Liuli: https://github.com/liuli-io/liuli

[2]

分发器配置: https://github.com/liuli-io/liuli/blob/main/docs/03.%E5%88%86%E5%8F%91%E5%99%A8%E9%85%8D%E7%BD%AE.md

[3]

备份器配置: https://github.com/liuli-io/liuli/blob/main/docs/04.%E5%A4%87%E4%BB%BD%E5%99%A8%E9%85%8D%E7%BD%AE.md

[4]

参数说明: https://github.com/liuli-io/liuli/blob/main/docs/02.%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F.md

[5]

分发器配置|钉钉微信配置教程: https://github.com/liuli-io/liuli/blob/main/docs/03.%E5%88%86%E5%8F%91%E5%99%A8%E9%85%8D%E7%BD%AE.md

[6]

Install & Configure MongoDB on the Raspberry Pi: https://www.mongodb.com/developer/how-to/mongodb-on-raspberry-pi/

[7]

How to install Conda and Docker on your Raspberry Pi: https://www.anegron.site/2020/06/18/how-to-install-conda-and-docker-on-your-raspberry-pi/

[8]

Docker 入门到实践-raspberry-pi: https://yeasy.gitbook.io/docker_practice/install/raspberry-pi

[9]

Docker官方文档 Install Docker Engine: https://docs.docker.com/engine/install/

6905896db5bf59f7ca0329a09b077a08.gif

树莓派(armv7l,arm32)buster配置Python虚拟环境、安装PyQt5、安装PySide2、ui和rc文件导出为py文件 【代码】树莓派(armv7l,arm32)buster配置Python虚拟环境、安装PyQt5、安装PySide2、ui和rc文件导出为py文件。 阅读详情

相关推荐

STP生成树/BPDU保护小实验

HCIA部分—STP生成树小实验 实验环境如图所示,要求: 1.在SW1上配置为根桥,使SW3的G0/0/1口作为根端口 2.在SW1的G0/0/3配置为边缘端口 3.若在SW1的G0/0/3口收到BPDU,能自动关闭该端口 4.通过配置bpdu保护,使端口能自动恢复up状态 首先,我们可以通过命令dis stp brief或者dis stp命令来得知SW1在生成树中的角色 确认SW1为非根交换机,此时可以通过修改stp优先级来让SW1成为根桥: 优先级数值缺省为32768,数值越小,优先级越高,数值

1mih的博客 5148

Python 网络编程(3):SimpleHTTPServer

SimpleHTTPServer SimpleHTTPServer是Python2自带的一个模块,是Python的Web服务器。它在Python3已经合并到http.server模块中。SimpleHTTPServer在Python 3的用法与在Python 2的用法相似(python3 -m http.server 6789) SimpleHTTPServer有一个特性: 如果待共享的目录下有index.html,那么index.html文件会被视为默认主页; 如果不存在index.html文件,那么就会

Robin_Pi的博客 4866

5G NR PDCCH实战解析:从DCI格式到CORESET配置的完整指南

本文深入解析5G NR PDCCH的实战配置,涵盖DCI格式选择、CORESET配置及Search Space优化等关键内容。基于3GPP R16标准,提供现网部署中的典型问题解决方案,如覆盖边缘失步、多用户调度冲突等,帮助提升控制信令传输效率。特别针对5G NR PDCCH的灵活资源分配和自适应编码机制进行详细探讨。

weixin_29231263的博客 498

sudo pip install gevent 安装失败的解决办法

sudo pip install gevent安装失败的解决办法。

jndingxin的专栏 6983

【大模型】MHA,MQA,GQA及KV Cache详解

在自回归模型中(Autoregressive Models),模型会逐个生成文本的每个token,这个过程可能比较慢,因为模型一次只能生成一个token,而且每次新的预测都依赖于之前的上下文。这意味着,要预测第1000个token,你需要用到前999个token的信息,这通常涉及到对这些token的表示进行一系列矩阵乘法运算。而要预测第1001个token,你不仅需要前999个token的信息,还要加上第1000个token的信息。

酒酿小圆子呀~ 2612

保姆级教程:用Vue3+Element Plus快速搭建Flowable流程定义管理后台界面

本文提供了一份详细的Vue3+Element Plus教程,指导开发者快速搭建Flowable流程定义管理后台界面。从项目初始化、核心页面设计到响应式数据处理,全面覆盖前端开发关键步骤,帮助提升企业级应用开发效率。

weixin_42662293的博客 478

玩转树莓派(一):树莓派更换国内源、设置中文显示及输入法

玩转树莓派(一):更换国内源、中文显示及中文输入法 换源摘要 学习Linux要有一个概念:Linux下一切皆文件,更换源主要是修改两个文件:/etc/apt/sources.list(软件源的配置文件地址);/etc/apt/sources.list.d/raspi.list(类似上面软件源的分仓库) 本人借鉴了很多其他博主的文章,在这里表示感谢,试了不少源,挑出我认为最好最快的推荐给大家 第一步复制保存原来的源配置文件,以备之后需要 sudo cp /etc/apt/sources.list /etc/

游云止水的博客 6141

运放比较电路分析以及应用

摘要:本文介绍了基于LM321运放的同相输入型单限电压比较器电路。该电路通过运放开环工作模式实现电平判断:当输入信号Vs+>0V时输出+15V高电平,Vs+<0V时输出≈0V低电平。典型应用包括直流电压过零检测、交流信号整形、电池欠压报警和数字信号噪声过滤。电路具有结构简单(仅需1个运放和1个电阻)、成本低的优势,适用于传感器信号处理、波形转换等场景。使用时需注意参考电平调整、输出电平匹配等问题,如需抗噪声可增加正反馈电阻构成施密特触发器。该电路是运放实现简单电平逻辑的经典方案。

qq_37999850的博客 399

树莓派实战——换源

树莓派换源

2303_77779277的博客 3515

杰理AC696N使用ADC检测电位器调音量教程

本教程详细介绍了在杰理AC696N芯片上使用ADC功能检测电位器电压值的方法。主要内容包括:硬件连接方式(电位器VCC/OUT/GND分别接3.3V、PA3引脚和地线),10位ADC配置(0-1023对应0-3.3V),以及核心代码实现。关键步骤涉及ADC采样通道初始化、GPIO引脚配置(关闭数字输入和上下拉电阻),以及通过定时器实现50Hz采样频率。教程还详解了ADC值到系统音量的线性映射算法,并提供了完整的代码示例和调试方法,帮助开发者实现电位器实时控制音量的功能。

qq_42014563的博客 1245

后仿真中的关于延时问题(物理特性角度)

大家都知道,后仿真讲究仿真时序。那么,在网表阶段,接触到后仿延时问题。今天总结一下。

那么菜的博客 1772

树莓派学习笔记——更换国内源

树莓派系统安装后默认源是国外的,因为某些原因国内访问非常慢,经常出现下载慢、无法更新的情况。这就需要更换为国内的镜像站来加快速度了。其次有些软件在本身的源没办法下载,所以就要换一个软件源。 由于我刚接触树莓派没多久,以前也没怎么接触linux,网上搜到的教程都差不多,我自己也看不懂,只能跟着改,结果发现改完以后无法更新。当然,这些教程是没问题的,只是系统更新了,我装了最新的,版本代码对不上。 我们...

u014091490的博客 2万+

51单片机8×8LED点阵屏动态显示取模汉字+ Proteus仿真

51单片机8×8LED点阵屏动态显示取模汉字+ Proteus仿真 Proteus仿真 取模软件:pctolcd2002 程序代码 #include<reg52.h> unsigned char code taba[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//行选 unsigned char code tabb[]={0x08,0x49,0x49,0x7F,0x08,0x49,0x49,0x7F};//选列"出" unsigned cha

perseverance51博客 8055

树莓派-linux内核 环境搭建及内核配置

1.linux内核开发准备工作 将树莓派--lInux内核源码拷贝到 SYSTEM 文件夹 内核源码下载地址:github.com/raspberrypi/ 下载4.14.y版本 在树莓派中 指令uname -r 可查看内核版本 从共享文件夹中cp交叉编译工具 tools-master.zip解压unzip tools-master.zip echo $PATH 获取当前环境变量的值 pwd 获取当前路径 永久有效,配置环境变量 修改工作目录下的.bashr...

m0_50620305的博客 1420

深度学习工具包 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")

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

树莓派学习之更换源

树莓派学习之更换源前言一、树莓派源的简介二、树莓派换源的原因三、树莓派如何换源3.1 进入相关目录,打开sources.list文件3.2 更换源地址3.3 同步更新源,执行如下命令:3.4更新升级以安装软件包,这个过程耗时较长四、总结 注:本文系湛江市第十七中学星火创客团队及岭南师范学院物联网俱乐部原创部分参赛项目,转载请保留声明。 前言  2021年9月7日我终于收到了秋招第一份offer,本人将在10月9日入职上海庆科信息技术有限公司-深圳分部。回顾大学走过的这几年,有过多少心酸泪水,不过最终也拿到自

weixin_43271542的博客 2万+

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

树莓派换源

sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak   #备份为 sources.list.bak sudo nano /etc/apt/sources.list      #编辑sources.list  文件 #以下内容为源,其他源同样加入 deb http://mirrors.aliyun.com/raspbian

G00dChina的博客 5372

IDEA的使用指南

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

配置树莓派

树莓派默认的下载源是国外的源,切换到国内清华大学开源软件镜像站。树莓派的命令行依次输入运行以下三个命令。退出nano编辑器回到命令行界面。把下面的内容拷贝到最后一行之后。,再按回车保存,再按。的第三方模块安装工具。,再按回车保存,再按。

weixin_44923666的博客 330

【树莓派 5B】换源 更换清华源

本文基于树莓派 5B 设备上的 Raspberry Pi OS 32bit (Debian 12 Bookworm) 平台,为树莓派更换国内清华镜像源,解决了网络下载速度慢、包管理器源不稳定的问题,改善树莓派的包管理器更新速度。参考资料树莓派换源教程树莓派4B更换清华源和没有公钥报错清华源 raspbian | 镜像站使用帮助源是指软件源,也就是软件仓库。更换源实际上就是更换树莓派的软件仓库。默认情况下,树莓派使用官方的软件源,服务器位于国外,导致软件更新和升级速度较慢。因此,我们选择更换为清华源。

AbaAbaxxx_的博客 4815

树莓派更换软件下载源

目录修改sources.list文件更新本地的软件源 树莓派官方系统raspbian自带的是国外的软件源,在国内使用经常会遇到无法下载软件的问题。 以下是把raspbian系统(buster版本)的下载源改为阿里云软件源的方法。 修改sources.list文件 在树莓派终端输入sudo nano /etc/apt/sources.list 将初始化中的代码中默认的官方软件源注释掉 # ,添加下面的软件源 deb http://mirrors.aliyun.com/raspbian/raspbian/ b

寂沧的博客 831

树莓派装linux教程,树莓派安装系统教程

1、下载树莓派官方系统访问树莓派官网:https://www.raspberrypi.org/downloads/,可以看到有很多的选择,比如官方的树莓派系统,以及其他第三方的系统。这里选择官方Raspbian系统:其他第三方操作上系统镜像如下图点击Raspbian后,进来又有很多不同功能的系统,这里我们选择第一个系统,它是带有桌面和推荐软件的系统,其他的系统也可根据自身实际需求来选择。点击Dow...

weixin_34058060的博客 4140

树莓派Linux源码配置,树莓派Linux内核编译,树莓派Linux内核更换

② 编译时报错及解决方案(亲测)● dmesg报错及解决方案(亲测)① 打包zImage文件。打包zImage成树莓派可用的xxx.img② 树莓派断电,拔出树莓派的SD卡,插到读卡器,读卡器插入电脑,映射到虚拟机③ 数据拷贝,挂载U盘④安装modules。含有设备驱动文件:比如HDMI,WIFI,USB,IO等⑤安装更新 kernel.img 文件,镜像名字是kernel7.img⑥ 把kernel_new.img文件,拷贝到data1分区,起名kernel7.img,覆盖原来的kernel7.img

m0_74985965的博客 1484

1.3 树莓派软件源及系统源设置

一 、软件源设置 1、编辑 /etc/apt/sources.list 文件(软件源),参考如下命令: 1 sudo nano /etc/apt/sources.list 2、删除原文件所有内容,buster系统用以下内容取代: 1 2 deb http://mirrors.sysu.edu.cn/raspbi...

大存的博客 1932

树莓派学习笔记(番外篇)——调试bug及解决办法(不断更新)

1.wget: unable to resolve host address ‘project-downloads.drogon.net’ 无法解析主机地址 解决方法: 登入root(VPS) /etc/resolv.conf 修改内容为下 nameserver 8.8.8.8 #google域名服务器 nameserver 8.8.4.4 #google域名服务器 ............

m0_53222561的博客 3184

树莓派安装linux

1、ubuntu官方操作 参考: https://ubuntu.com/tutorials/how-to-install-ubuntu-desktop-on-raspberry-pi-4#1-overview 2、一般操作

lisp10101的博客 2592

树莓派修改dns服务器配置,树莓派安装配置BIND域名解析DNS服务

前言BIND是美国伯克利大学在LINUX平台上开发的一个开源DNS域名解析软件,因为DNS这个域名解析服务用的地方还是比较多的比如说在域控和目录服务方面都必须用到域名解析DNS服务。这里我们用的BIND是域名DNS解析非常常用的开源服务,在全球的90%以上的DNS服务都是采用的BIND,下面来给大家介绍下如何在树莓派上配置一个DNS服务的BIND的软件。安装并配置好BIND服务#sudo apt-...

weixin_39538877的博客 1028
上一篇: 猜猜我在哪
下一篇: 我的周刊(第038期)
老胡的储物柜
博客等级 码龄12年 1142粉丝 284原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值