Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenDocCN
Ailearning
提交
7db0d3df
A
Ailearning
项目概览
OpenDocCN
/
Ailearning
10 个月 前同步成功
通知
8
Star
36240
Fork
11272
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
A
Ailearning
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
7db0d3df
编写于
12月 11, 2019
作者:
片刻小哥哥
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
添加 attention 机制优化结果
上级
c78b1c02
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
10 addition
and
5 deletion
+10
-5
src/py3.x/tensorflow2.x/text_Emotion.py
src/py3.x/tensorflow2.x/text_Emotion.py
+10
-5
未找到文件。
src/py3.x/tensorflow2.x/text_Emotion.py
浏览文件 @
7db0d3df
...
...
@@ -5,6 +5,8 @@
# https://blog.csdn.net/alip39/article/details/95891321
# 参考代码:
# https://blog.csdn.net/u012052268/article/details/90238282
# Attention:
# https://github.com/philipperemy/keras-attention-mechanism
import
re
import
os
import
keras
...
...
@@ -16,7 +18,8 @@ import jieba
from
sklearn.model_selection
import
train_test_split
from
keras
import
Model
from
keras.models
import
load_model
from
keras.layers
import
Dropout
,
Dense
,
Flatten
,
Bidirectional
,
Embedding
,
GRU
,
Input
from
keras.layers.normalization
import
BatchNormalization
from
keras.layers
import
Dropout
,
Dense
,
Flatten
,
Bidirectional
,
Embedding
,
GRU
,
Input
,
multiply
from
keras.preprocessing.sequence
import
pad_sequences
from
keras.utils.np_utils
import
to_categorical
from
keras.optimizers
import
Adam
...
...
@@ -117,12 +120,15 @@ class EmotionModel(object):
# ) #设置句子的最大长度
print
(
"开始训练模型....."
)
# 使用
sequence_input
=
Input
(
shape
=
(
self
.
MAX_SEQUENCE_LENGTH
,),
dtype
=
'int32'
)
# 返回一个张量,长度为1000,也就是模型的输入为batch_size*1000
embedded_sequences
=
embedding_layer
(
sequence_input
)
# 返回batch_size*1000*100
x
=
Bidirectional
(
GRU
(
100
,
return_sequences
=
True
))(
embedded_sequences
)
x
=
Dropout
(
0.6
)(
x
)
# 添加 注意力(本质上是通过加入 一个随机向量 作为 权重 来优化 输入的值 - 与全链接不同的是,这个还会作为输入项 和 输入做点乘 )
attention_probs
=
Dense
(
self
.
EMBEDDING_DIM
,
activation
=
'softmax'
,
name
=
'attention_probs'
)(
embedded_sequences
)
attention_mul
=
multiply
([
embedded_sequences
,
attention_probs
],
name
=
'attention_mul'
)
x
=
Bidirectional
(
GRU
(
self
.
EMBEDDING_DIM
,
return_sequences
=
True
,
dropout
=
0.5
))(
attention_mul
)
x
=
Dropout
(
0.5
)(
x
)
x
=
Flatten
()(
x
)
# x = BatchNormalization()(x)
preds
=
Dense
(
self
.
pre_num
,
activation
=
'softmax'
)(
x
)
self
.
model
=
Model
(
sequence_input
,
preds
)
# 设置优化器
...
...
@@ -176,7 +182,6 @@ class EmotionModel(object):
x_train
,
x_test
,
y_train
,
y_test
=
train_test_split
(
x
,
y
,
test_size
=
test_size
,
random_state
=
10000
)
return
(
x_train
,
y_train
),
(
x_test
,
y_test
)
def
train
(
self
):
'''训练模型'''
vocab_list
,
word_index
,
embeddings_matrix
=
load_embeding
()
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录