Programming¶
Pytorch 3 :Model & Training
导言
- 构建复杂模型:学习如何构建更复杂的神经网络模型,如卷积神经网络(CNN)、循环神经网络(RNN)等。
- 损失函数与优化器:理解不同的损失函数(如交叉熵、均方误差)和优化器(如SGD、Adam)。
- 训练与验证:编写训练循环,理解如何监控训练过程,防止过拟合。
Pytorch 4 :Save & Load & Pretrain
导言
- 保存与加载模型:学习如何保存训练好的模型,并在需要时加载模型进行推理或继续训练。
- 迁移学习:学习如何使用预训练模型进行迁移学习,微调模型以适应新的任务。
- 常用预训练模型:介绍PyTorch中常用的预训练模型,如ResNet、VGG等。
Pytorch 5 : Distributed Training & Parallelism (Mem Re-allocated)
导言
- 内存使用监控与优化
- 多GPU使用
- 分布式训练:了解如何使用PyTorch进行多GPU训练或分布式训练。
- 并行策略的实现和选择
Go Install and Command
Install
wget https://go.dev/dl/go1.18.3.linux-amd64.tar.gz
rm -rf /usr/local/go && tar -C /usr/local -xzf go1.18.3.linux-amd64.tar.gz
(maybe need sudo)
sudo rm -rf /usr/local/go && sudo tar -C /usr/local -xzf go1.18.3.linux-amd64.tar.gz
export PATH=$PATH:/usr/local/go/bin
go version
Command usage
$ cd $HOME/go/src/hello
$ go run main.go #直接运行
Hello, World!!
$ go build # 产生可执行文件
$ ./hello
Hello, World!!
包管理
Packages
Go packages are folders that contain one more go files.
Modules
A modules (starting with vgo and go 1.11) is a versioned collection of packages.
go list -m -u all 来检查可以升级的package,
使用go get -u need-upgrade-package 升级后会将新的依赖版本更新到go.mod
也可以使用 go get -u 升级所有依赖
作者:若与 链接:https://www.jianshu.com/p/760c97ff644c 来源:简书 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
需要进一步的研究学习
暂无
遇到的问题
暂无
开题缘由、总结、反思、吐槽~~
参考文献
https://devhints.io/go
Go mod
简介
go modules 是 golang 1.11 新加的特性。现在1.12 已经发布了,是时候用起来了。Modules官方定义为:
模块是相关Go包的集合。modules是源代码交换和版本控制的单元。 go命令直接支持使用modules,包括记录和解析对其他模块的依赖性。modules替换旧的基于GOPATH的方法来指定在给定构建中使用哪些源文件。
使用
初始化项目
对应go.mod文件
go.mod文件一旦创建后,它的内容将会被go toolchain全面掌控。
go toolchain会在各类命令执行时,比如go get、go build、go mod等修改和维护go.mod文件。
go.mod 提供了module, require、replace和exclude 四个命令
module 语句指定包的名字(路径) require 语句指定的依赖项模块 replace 语句可以替换依赖项模块 exclude 语句可以忽略依赖项模块
自动添加依赖
对于main.go里的import
package main
import (
"crypto/hmac"
"crypto/sha1"
"encoding/hex"
"encoding/json"
"fmt"
"io/ioutil"
"log"
"net/http"
"os"
"os/exec"
"strings"
)
……
go run main.go 运行代码会发现 go mod 会自动查找依赖自动下载,并修改go.mod(安装 package 的原則是先拉最新的 release tag,若无tag则拉最新的commit)
自己发布module包
结合github很简单实现
需要进一步的研究学习
暂无
遇到的问题
暂无
开题缘由、总结、反思、吐槽~~
参考文献
https://www.jianshu.com/p/760c97ff644c
Golang Syntax
为什么要学习go语言
- 同步方式轻松实现高并发,充分利用多核
- 基于消息传递的通信方式
- 适合服务器和网络编程
- 有垃圾回收机制
- 静态语言,有编译过程,和独立的静态可执行文件,只依赖glibc
- 不像python要安装各种库,java也要JRE
- 兼顾python的易开发性和c的性能
- 内存占用极小,支持10W+的并行
一些缺点
- 实际运行时,由于GC的影响,延迟会比较严重
- 代码会有很多重复的地方
有趣的工具
- gofmt
- gofix
- govet
数据类型
- int8类型 表示 -128~127
- Channel 类型
- 切片类型 (可变长数组
变量声明
第一种,指定变量类型,如果没有初始化,则变量默认为零值。
//特殊
var a *int
var a []int
var a map[string] int
var a chan int
var a func(string) int
var a error // error 是接口
第二种,根据值自行判定变量类型。
第三种,使用声明符号:=
但是如果变量已经使用 var 声明过了,再使用 := 声明变量,就产生编译错误,格式:
循环语句
并发和通道通讯
go函数
Go 语言支持并发,我们只需要通过 go 关键字来开启 goroutine 即可。
goroutine 是轻量级线程,goroutine 的调度是由 Golang 运行时进行管理的。
goroutine 语法格式:go 函数名( 参数列表 )
Go 允许使用 go 语句开启一个新的运行期线程, 即 goroutine,以一个不同的、新创建的 goroutine 来执行一个函数。 同一个程序中的所有 goroutine 共享同一个地址空间。
通道(channel)
通道可用于两个 goroutine 之间通过传递一个指定类型的值来同步运行和通讯。操作符 <- 用于指定通道的方向,发送或接收。如果未指定方向,则为双向通道。
声明一个通道很简单,我们使用chan关键字即可,通道在使用前必须先创建:
example
1
func countGoodRectangles(rectangles [][]int) int {
cnt, maxLen := 0, 0
for _, rectangle := range rectangles {
k := int(math.Min(float64(rectangle[0]), float64(rectangle[1])))
if k == maxLen {
cnt++
}
if k > maxLen {
maxLen, cnt = k, 1
}
}
return cnt
}
webhook
https://github.com/swangeese/acsa-web/tree/webhook
需要进一步的研究学习
暂无
遇到的问题
暂无
开题缘由、总结、反思、吐槽~~
参考文献
https://www.runoob.com/go/go-concurrent.html