Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
汀、人工智能
chatCSDN
提交
1cdafdef
C
chatCSDN
项目概览
汀、人工智能
/
chatCSDN
与 Fork 源项目一致
Fork自
CSDN 技术社区 / ai / chatCSDN
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
C
chatCSDN
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
1cdafdef
编写于
4月 20, 2023
作者:
CSDN-Ada助手
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add blog url
上级
a0f6ec61
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
2 addition
and
165 deletion
+2
-165
README.md
README.md
+2
-0
img_demoAE.py
img_demoAE.py
+0
-165
未找到文件。
README.md
浏览文件 @
1cdafdef
...
...
@@ -4,6 +4,8 @@ ChatCSDN基于RWKV1.5B基模型
源码来源于:https://github.com/BlinkDL/RWKV-LM/tree/main/RWKV-v4neo
主要是在RWKV提供的1.5B参数的基础之上,使用CSDN的问答数据和博客数据进行增量预训练,经过指令微调,得到拥有IT行业知识体系的大语言模型。
原始模型参数地址:https://huggingface.co/BlinkDL/rwkv-4-pile-1b5
微调后的模型参数地址:https://huggingface.co/zxm2023/ChatCSDN
介绍博客地址:https://blog.csdn.net/zxm2015/article/details/130227450
## 预处理数据
使用项目 https://github.com/EleutherAI/gpt-neox 提供的数据转换工具将.jsonl文件转换为.bin和.idx文件,目前已经将代码全部移植过来,放在tools文件夹中。词典使用的是20B_tokenizer.json。
...
...
img_demoAE.py
已删除
100644 → 0
浏览文件 @
a0f6ec61
########################################################################################################
# The RWKV Language Model - https://github.com/BlinkDL/RWKV-LM
########################################################################################################
import
torch
,
types
,
os
import
numpy
as
np
from
PIL
import
Image
import
torch.nn
as
nn
from
torch.nn
import
functional
as
F
import
torchvision
as
vision
import
torchvision.transforms
as
transforms
np
.
set_printoptions
(
precision
=
4
,
suppress
=
True
,
linewidth
=
200
)
print
(
f
'loading...'
)
########################################################################################################
model_prefix
=
'test/image_trained/out-v7c_d8_256-224-13bit-OB32x0.5-201'
input_img
=
'test/img_ae_test/test0.png'
########################################################################################################
class
ToBinary
(
torch
.
autograd
.
Function
):
@
staticmethod
def
forward
(
ctx
,
x
):
return
torch
.
floor
(
x
+
0.5
)
# no need for noise when we have plenty of data
@
staticmethod
def
backward
(
ctx
,
grad_output
):
return
grad_output
.
clone
()
# pass-through
class
R_ENCODER
(
nn
.
Module
):
def
__init__
(
self
,
args
):
super
().
__init__
()
self
.
args
=
args
dd
=
8
self
.
Bxx
=
nn
.
BatchNorm2d
(
dd
*
64
)
self
.
CIN
=
nn
.
Conv2d
(
3
,
dd
,
kernel_size
=
3
,
padding
=
1
)
self
.
Cx0
=
nn
.
Conv2d
(
dd
,
32
,
kernel_size
=
3
,
padding
=
1
)
self
.
Cx1
=
nn
.
Conv2d
(
32
,
dd
,
kernel_size
=
3
,
padding
=
1
)
self
.
B00
=
nn
.
BatchNorm2d
(
dd
*
4
)
self
.
C00
=
nn
.
Conv2d
(
dd
*
4
,
256
,
kernel_size
=
3
,
padding
=
1
)
self
.
C01
=
nn
.
Conv2d
(
256
,
dd
*
4
,
kernel_size
=
3
,
padding
=
1
)
self
.
C02
=
nn
.
Conv2d
(
dd
*
4
,
256
,
kernel_size
=
3
,
padding
=
1
)
self
.
C03
=
nn
.
Conv2d
(
256
,
dd
*
4
,
kernel_size
=
3
,
padding
=
1
)
self
.
B10
=
nn
.
BatchNorm2d
(
dd
*
16
)
self
.
C10
=
nn
.
Conv2d
(
dd
*
16
,
256
,
kernel_size
=
3
,
padding
=
1
)
self
.
C11
=
nn
.
Conv2d
(
256
,
dd
*
16
,
kernel_size
=
3
,
padding
=
1
)
self
.
C12
=
nn
.
Conv2d
(
dd
*
16
,
256
,
kernel_size
=
3
,
padding
=
1
)
self
.
C13
=
nn
.
Conv2d
(
256
,
dd
*
16
,
kernel_size
=
3
,
padding
=
1
)
self
.
B20
=
nn
.
BatchNorm2d
(
dd
*
64
)
self
.
C20
=
nn
.
Conv2d
(
dd
*
64
,
256
,
kernel_size
=
3
,
padding
=
1
)
self
.
C21
=
nn
.
Conv2d
(
256
,
dd
*
64
,
kernel_size
=
3
,
padding
=
1
)
self
.
C22
=
nn
.
Conv2d
(
dd
*
64
,
256
,
kernel_size
=
3
,
padding
=
1
)
self
.
C23
=
nn
.
Conv2d
(
256
,
dd
*
64
,
kernel_size
=
3
,
padding
=
1
)
self
.
COUT
=
nn
.
Conv2d
(
dd
*
64
,
args
.
my_img_bit
,
kernel_size
=
3
,
padding
=
1
)
def
forward
(
self
,
img
):
ACT
=
F
.
mish
x
=
self
.
CIN
(
img
)
xx
=
self
.
Bxx
(
F
.
pixel_unshuffle
(
x
,
8
))
x
=
x
+
self
.
Cx1
(
ACT
(
self
.
Cx0
(
x
)))
x
=
F
.
pixel_unshuffle
(
x
,
2
)
x
=
x
+
self
.
C01
(
ACT
(
self
.
C00
(
ACT
(
self
.
B00
(
x
)))))
x
=
x
+
self
.
C03
(
ACT
(
self
.
C02
(
x
)))
x
=
F
.
pixel_unshuffle
(
x
,
2
)
x
=
x
+
self
.
C11
(
ACT
(
self
.
C10
(
ACT
(
self
.
B10
(
x
)))))
x
=
x
+
self
.
C13
(
ACT
(
self
.
C12
(
x
)))
x
=
F
.
pixel_unshuffle
(
x
,
2
)
x
=
x
+
self
.
C21
(
ACT
(
self
.
C20
(
ACT
(
self
.
B20
(
x
)))))
x
=
x
+
self
.
C23
(
ACT
(
self
.
C22
(
x
)))
x
=
self
.
COUT
(
x
+
xx
)
return
torch
.
sigmoid
(
x
)
class
R_DECODER
(
nn
.
Module
):
def
__init__
(
self
,
args
):
super
().
__init__
()
self
.
args
=
args
dd
=
8
self
.
CIN
=
nn
.
Conv2d
(
args
.
my_img_bit
,
dd
*
64
,
kernel_size
=
3
,
padding
=
1
)
self
.
B00
=
nn
.
BatchNorm2d
(
dd
*
64
)
self
.
C00
=
nn
.
Conv2d
(
dd
*
64
,
256
,
kernel_size
=
3
,
padding
=
1
)
self
.
C01
=
nn
.
Conv2d
(
256
,
dd
*
64
,
kernel_size
=
3
,
padding
=
1
)
self
.
C02
=
nn
.
Conv2d
(
dd
*
64
,
256
,
kernel_size
=
3
,
padding
=
1
)
self
.
C03
=
nn
.
Conv2d
(
256
,
dd
*
64
,
kernel_size
=
3
,
padding
=
1
)
self
.
B10
=
nn
.
BatchNorm2d
(
dd
*
16
)
self
.
C10
=
nn
.
Conv2d
(
dd
*
16
,
256
,
kernel_size
=
3
,
padding
=
1
)
self
.
C11
=
nn
.
Conv2d
(
256
,
dd
*
16
,
kernel_size
=
3
,
padding
=
1
)
self
.
C12
=
nn
.
Conv2d
(
dd
*
16
,
256
,
kernel_size
=
3
,
padding
=
1
)
self
.
C13
=
nn
.
Conv2d
(
256
,
dd
*
16
,
kernel_size
=
3
,
padding
=
1
)
self
.
B20
=
nn
.
BatchNorm2d
(
dd
*
4
)
self
.
C20
=
nn
.
Conv2d
(
dd
*
4
,
256
,
kernel_size
=
3
,
padding
=
1
)
self
.
C21
=
nn
.
Conv2d
(
256
,
dd
*
4
,
kernel_size
=
3
,
padding
=
1
)
self
.
C22
=
nn
.
Conv2d
(
dd
*
4
,
256
,
kernel_size
=
3
,
padding
=
1
)
self
.
C23
=
nn
.
Conv2d
(
256
,
dd
*
4
,
kernel_size
=
3
,
padding
=
1
)
self
.
Cx0
=
nn
.
Conv2d
(
dd
,
32
,
kernel_size
=
3
,
padding
=
1
)
self
.
Cx1
=
nn
.
Conv2d
(
32
,
dd
,
kernel_size
=
3
,
padding
=
1
)
self
.
COUT
=
nn
.
Conv2d
(
dd
,
3
,
kernel_size
=
3
,
padding
=
1
)
def
forward
(
self
,
code
):
ACT
=
F
.
mish
x
=
self
.
CIN
(
code
)
x
=
x
+
self
.
C01
(
ACT
(
self
.
C00
(
ACT
(
self
.
B00
(
x
)))))
x
=
x
+
self
.
C03
(
ACT
(
self
.
C02
(
x
)))
x
=
F
.
pixel_shuffle
(
x
,
2
)
x
=
x
+
self
.
C11
(
ACT
(
self
.
C10
(
ACT
(
self
.
B10
(
x
)))))
x
=
x
+
self
.
C13
(
ACT
(
self
.
C12
(
x
)))
x
=
F
.
pixel_shuffle
(
x
,
2
)
x
=
x
+
self
.
C21
(
ACT
(
self
.
C20
(
ACT
(
self
.
B20
(
x
)))))
x
=
x
+
self
.
C23
(
ACT
(
self
.
C22
(
x
)))
x
=
F
.
pixel_shuffle
(
x
,
2
)
x
=
x
+
self
.
Cx1
(
ACT
(
self
.
Cx0
(
x
)))
x
=
self
.
COUT
(
x
)
return
torch
.
sigmoid
(
x
)
########################################################################################################
print
(
f
'building model...'
)
args
=
types
.
SimpleNamespace
()
args
.
my_img_bit
=
13
encoder
=
R_ENCODER
(
args
).
eval
().
cuda
()
decoder
=
R_DECODER
(
args
).
eval
().
cuda
()
zpow
=
torch
.
tensor
([
2
**
i
for
i
in
range
(
0
,
13
)]).
reshape
(
13
,
1
,
1
).
cuda
().
long
()
encoder
.
load_state_dict
(
torch
.
load
(
f
'
{
model_prefix
}
-E.pth'
))
decoder
.
load_state_dict
(
torch
.
load
(
f
'
{
model_prefix
}
-D.pth'
))
########################################################################################################
print
(
f
'test image...'
)
img_transform
=
transforms
.
Compose
([
transforms
.
PILToTensor
(),
transforms
.
ConvertImageDtype
(
torch
.
float
),
transforms
.
Resize
((
224
,
224
))
])
with
torch
.
no_grad
():
img
=
img_transform
(
Image
.
open
(
input_img
)).
unsqueeze
(
0
).
cuda
()
z
=
encoder
(
img
)
z
=
ToBinary
.
apply
(
z
)
zz
=
torch
.
sum
(
z
.
squeeze
().
long
()
*
zpow
,
dim
=
0
)
print
(
f
'Code shape =
{
zz
.
shape
}
\n
{
zz
.
cpu
().
numpy
()
}
\n
'
)
out
=
decoder
(
z
)
vision
.
utils
.
save_image
(
out
,
f
"
{
input_img
.
split
(
'.'
)[
0
]
}
-out-13bit.jpg"
)
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录