人工智能

人工智能 · 圈子

674 位酷友已加入

本圈子收集关于人工智能的各种技术资料,加入圈子可以上传、下载资料,也可以使用提问来寻求资料或分享你认为有价值的站外链接~

关注推荐最新

热门标签

计算机

计算机·圈子   首发

anna 发布了
问答

Keras中add_loss函数的作用是什么?

我偶然发现了变种自动编码器,并试图使它们使用keras在MNIST上工作。我在github上找到了一个教程。 我的问题涉及以下代码行: 为什么使用add_loss而不是将其指定为编译选项? 类似于vae.compile(optimizer='rmsprop',loss=vae_loss)似乎不起作用,它还指出以下错误: 这个函数和自定义损失函数有什么区别,我可以添加它作为Model.fit()的参数吗? 编辑1 我删除了向模型添加损失的行,并使用了compile函数的loss参数。像这样: 这将引发TypeError: 编辑2 感谢@MarioZ,我得以找到解决方法。 由于某些原因,我在拟合模型时必须明确指定y和y_test。最初,我不需要这样做。产生的样本对我来说似乎很合理。 尽管我可以解决这个问题,但我仍然不知道这两种方法的区别和缺点(除了需要不同的语法)。有人可以给我更多的见解吗?

计算机

计算机·圈子   首发

阿托 发布了
计算机

计算机·圈子   首发

阿托 更新了
资源

【Demo】基于bert的语义匹配模型

利用预训练的中文模型实现基于bert的语义匹配模型 环境配置 数据集 LCQMC官方数据,下载到data文件夹 包含训练、验证和测试集,训练集包含24万口语化描述的中文句子对,标签为1或0。1为句子语义相似,0为语义不相似。 文件说明 训练脚本 train.sh 批量测试脚本 predict.sh 利用模型进行单条语句测试 intent.py chinese_L-12_H-768_A-12为预训练的相关模型和词典 参数说明 max_seq_length sentence的最大长度(字) train_batch_size batch_size的大小 max_seq_length = 50 eval_accuracy = 0.87207 test_accuracy = 0.86272 max_seq_length = 40 eval_accuracy = 0.88093615 test_accuracy = 0.86256 来源https://github.com/pengming617/bert_textMatching/blob/master/data/test.txt

计算机

计算机·圈子   首发

阿托 更新了
资源

【Demo】基于Pytorch的中文语义相似度匹配模型

基于Pytorch的中文语义相似度匹配模型 运行环境: python3.7 pytorch1.2 transformers2.5.1 数据集: 采用LCQMC数据(将一个句对进行分类,判断两个句子的语义是否相同(二分类任务)),因数据存在侵权嫌疑,故不提供下载,需要者可向官方提出数据申请http://icrc.hitsz.edu.cn/info/1037/1146.htm ,并将数据解压到data文件夹即可。 模型评测指标为:ACC,AUC以及预测总共耗时。 Embeding: 本项目输入都统一采用分字策略,故通过维基百科中文语料,训练了字向量作为Embeding嵌入。训练语料、向量模型以及词表,可通过百度网盘下载。 链接:https://pan.baidu.com/s/1qByw67GdFSj0Vt03GSF0qg 提取码:s830 模型文件: 本项目训练的模型文件(不一定最优,可通过超参继续调优),也可通过网盘下载。 链接:https://pan.baidu.com/s/1qByw67GdFSj0Vt03GSF0qg 提取码:s830 测试集结果对比: 部分模型,借鉴了 https://github.com/alibaba-edu/simple-effective-text-matching-pytorch https://github.com/pengshuang/Text-Similarity 等项目。 来源https://github.com/zhaogaofeng611/TextMatch

计算机

计算机·圈子   首发

阿托 更新了
资源

中山大学 KRVQA 数据集

介绍 近期,中山大学为VQA模型评估提出了一个基于常识的无偏视觉问答数据集(Knowledge-Routed Visual Question Reasoning,KRVQA)。考虑到理想的VQA模型应该正确地感知图像上下文,理解问题并整合其学习的知识,KRVQA数据集旨在切断当前深度模型所利用的快捷学习,并推动基于知识的视觉问题推理的边界研究。 具体而言,基于视觉基因组场景图和带有受控程序的外部知识库生成问题--答案对,可以将知识与其他偏差中分离出来。从图像场景图或知识库中选择一个或两个三元组进行多步推理,并平衡答案分布,避免答案歧义。与现有的VQA数据集相反,知识推理的两个主要约束为: 一个问题必须与知识库中的多个三元组相关,但只有一个三元组与图像对象有关。这强制VQA模型正确地感知图像,而不是仅仅基于给定的问题猜测知识。 所有问题都基于不同的知识库三元组,但是训练集和测试集的候选答案集合相同。 数据集 “question_answer_reason.json”是生成的问题答案对样本。它包含一个问题答案对样本列表。每个样本都有以下字段: “question”:问题原始文本。 “answer”:答案原始文本。 "level”:此问题的推断步骤。 “ KB”:0或1,指示是否使用外部知识库生成此问题。 “ qtype”:本文中描述的问题类型。 “reason”:一个列表,其中包含Visual Genome中使用的场景图三元组或FVQA中的知识三元组(“ all_fact_triples_release.json”)。 “ image_id”:视觉基因组的图像ID。 “ question_id”:此问题的ID问题。 “ splits.json”包含我们的训练/验证/测试分组的问题ID。包括: “train”:训练“ question_id”列表 “val”:验证“ question_id”列表 “test”:测试“ question_id”列表 图像的特征和场景图注释可以从Visual Genome官方网站下载。 基础知识由FVQA [1]提供,可以从dropbox下载。我们使用“ new_dataset_release / all_fact_triples_release.json”作为完整的外部知识库。 来源http://www.sysu-hcp.net/resources/

资源

【毕业设计】基于深度学习的阿兹海默症早期诊断辅助系统设计与实现

基于深度学习的阿兹海默症早期诊断辅助系统设计与实现 系统启动说明 1,打开Pycharm,导入该项目,并安装Tensorflow、keras、Flask等需要的包(命令行安装); 2,运行ADMS项目下的app.py文件,运行成功后,会出现一个URL,点击或复制到浏览器中打开,并可自动跳转到系统登录首页。 3,ADMS/app文件夹下: create_db.py:增删改查表命令 models.py:创建数据库表项 views.py:在该项目中暂时没有用 ExpertPush.py:导入专家用户信息 4,ADMS/Model文件夹: 放置的是训练好的模型,需要进行联合预测的两种模型 5,ADMS/Pred文件夹: HipvoluSum.py:获得预测得到的标签文件中的海马体体积 ImagCrop..py:对用户输入的图像进行分割 SinglePrediction.py:对单张图片通过加载模型进行预测,并得到预测标签文件 6,ADMS/static文件夹: 放置的是Web系统所需要的css、js以及用户上传图像、预测图像以及上传的诊断结果保存目录 7,ADMS/templates文件夹: 放置的是Web系统的前端HTML页面 本系统使用说明: 普通用户 1,注册功能:普通用户初次访问该系统,需要首先选择角色为普通用户,然后选择下方的注册,跳转到注册页面,输入不重复的用户ID、密码、姓名、性别、出生日期、联系电话,之后点击注册按钮,系统首先会判断该用户ID是否已经被注册,其次会再次判断用户输入的注册信息的规范性,当所有信息都满足要求后,用户便可以成功注册。 2,登录功能:用户成功注册后,将跳转到注册成功页面,此时用户可点击登录,跳转到登录页面,在登录页面,用户输入注册时的用户ID,用户密码,系统会自动进行验证,当用户ID和密码都正确时,登录成功,将自动跳转到对应用户的首页,首页将自动展示该用户可在本系统中执行的功能以及操作。 3,上传MRI影像功能:用户选择需要上传的MRI影像,点击上传,系统读取成功后,系统将获取该MRI影像的名称,该名称将作为后续诊断的唯一标志,此时用户选择点击提交,将该MRI影像信息提交到系统数据库中进行保存。 4,诊断申请功能:当用户成功上传自己需要诊断(在系统中将作为最新的数据返回到诊断申请页面)MRI影像后,用户方可提出诊断申请。当该MRI影像已经成功提交诊断申请或者诊断申请还未结束时,是不能重复提交该MRI影像的诊断申请。 5,诊断结果查看功能:当诊断完毕后,普通用户便可在诊断反馈页面查看自己的诊断结果以及专家给出的诊断意见。 6,历史对比信息查看功能:当用户在本系统中有诊断信息后,系统将记录该用户的诊断信息,当用户有多次诊断记录后,系统将生成历史诊断对比信息,并以折线图、柱状图等形式表示,供用户查看。 7,个人信息查看及修改功能:普通用户可查看个人的姓名、性别等个人信息(但用户ID不能被修改,因为有唯一标识),若发现自己的信息有误或需要更新个人信息,可直接修改并提交,便可成功修改。 8,联系我们功能:用户有任何与系统相关方面的疑问,都可以选择联系我们页面中的联系方式,联系开发作者。 专家用户 1,登录功能:专家用户登录时首先选中角色为专家用户,然后输入用户ID,用户密码(这里我们设置的为与医院进行合作,以医生的工号为用户ID,这样就不会发生重复了,用户密码为设置的初始密码),系统会自动进行验证,当用户ID和密码都正确时,登录成功,将自动跳转到对应用户的首页,首页将自动展示该用户可在本系统中执行的功能以及操作。 2,诊断修正功能:当管理员批准诊断申请并进行预测后,专家用户便可对该用户的MRI影像进行诊断修正以及上传诊断结果等功能。专家用户首先批准诊断后,可下载预测文件,并通过专业工具进行诊断修正。 3,上传诊断结果功能:当专家用户完成诊断修正后,方可上传诊断结果,此时一定不能修改下载的预测文件的名称,因为这里预测文件名称在系统中具有唯一标识作用,一个MRI拥有一个唯一的名称。专家同时给出诊断意见,供用户参考。 4,入职申请功能:专家用户若想长期为本系统服务,便可申请入职本系统,进行有偿诊断。专家用户在入职申请页面,选择入职年薪,专家身份以及填写专家履历后,便可提出入职申请,并等待批准。当专家成功入职后,将获得个人成就栏目,该栏目包括专家身份、专家等级、个人积分、诊断次数,专家排名等指标,将作为该用户薪资的依据。 5,个人信息查看及修改功能:专家用户可查看个人的姓名、性别等个人信息(但用户ID不能被修改,因为有唯一标识),若发现自己的信息有误或需要更新个人信息,可直接修改并提交,便可成功修改。 6,联系我们功能:用户有任何与系统相关方面的疑问,都可以选择联系我们页面中的联系方式,联系开发作者。 管理员 1,登录功能:管理员登录时首先选中角色为管理员,然后输入用户ID,用户密码(这里管理员用户ID和密码由系统开发人员在开发时就进行设定),系统会自动进行验证,当用户ID和密码都正确时,登录成功,将自动跳转到对应用户的首页,首页将自动展示该用户可在本系统中执行的功能以及操作。 2,诊断批准功能:当普通用户提出诊断申请后,管理员可进行诊断批准,并进行预测,预测成功,将预测信息保存到数据库中,,此时专家用户便可进行诊断修正以及上传诊断结果。 3,入职批准功能:当专家用户提出入职申请后,管理员可查看专家入职申请信息以及个人履历,并进行入职批准,批准成功后,专家用户便可正式入职。 4,用户管理功能:管理员可查看普通用户的信息、专家用户的信息,并导入专家用户信息。 5,个人信息查看及修改功能:管理员可查看个人的姓名、性别等个人信息(但用户ID不能被修改,因为有唯一标识),若发现自己的信息有误或需要更新个人信息,可直接修改并提交,便可成功修改。 6,联系我们功能:用户有任何与系统相关方面的疑问,都可以选择联系我们页面中的联系方式,联系开发作者。 via:https://github.com/Xminghua/AD_Prediction

资源

【Demo】基于BERT+GRU+ATT模型的人物关系抽取

数据集 运行该项目的模型训练和模型预测脚本需要准备BERT中文版的模型数据,下载网址为:https://github.com/google-research/bert/blob/master/multilingual.md 。 利用笔者自己收集的3881个样本,对人物关系抽取进行尝试。人物关系共分为14类,如下: 人物关系类别频数分布条形图如下: 模型结构 BERT + 双向GRU + Attention + FC 模型训练效果 在测试集上的每一类的classification_report如下: 利用Chinese_wwm_ext + 双向GRU + Attention + FC模型,效果如下: 在测试集上的每一类的classification_report如下: 模型预测 参考文章 https://www.cnblogs.com/jclian91/p/12328570.html 来源https://github.com/percent4/people_relation_extract

资源

【毕业设计】基于Tensorflow和Keras实现端到端的不定长中文字符检测和识别

基于Tensorflow和Keras实现端到端的不定长中文字符检测和识别 简介 基于Tensorflow和Keras实现端到端的不定长中文字符检测和识别 文本检测:CTPN 文本识别:DenseNet + CTC 环境部署 注:CPU环境执行前需注释掉for gpu部分,并解开for cpu部分的注释 Demo 将测试图片放入test_images目录,检测结果会保存到test_result中 模型训练 CTPN训练 详见ctpn/README.md DenseNet + CTC训练 1. 数据准备 数据集:https://pan.baidu.com/s/1QkI7kjah8SPHwOQ40rS1Pw (密码:lu7m) 共约364万张图片,按照99:1划分成训练集和验证集 数据利用中文语料库(新闻 + 文言文),通过字体、大小、灰度、模糊、透视、拉伸等变化随机生成 包含汉字、英文字母、数字和标点共5990个字符 每个样本固定10个字符,字符随机截取自语料库中的句子 图片分辨率统一为280x32 图片解压后放置到train/images目录下,描述文件放到train目录下 2. 训练 3. 结果 val acc predict model 0.983 8ms 18.9MB GPU: GTX TITAN X Keras Backend: Tensorflow 4. 生成自己的样本 可参考SynthText_Chinese_version,TextRecognitionDataGenerator和text_renderer 效果展示 参考 [1] https://github.com/eragonruan/text-detection-ctpn [2] https://github.com/senlinuc/caffe_ocr [3] https://github.com/chineseocr/chinese-ocr [4] https://github.com/xiaomaxiao/keras_ocr 来源https://github.com/YCG09/chinese_ocr

资源

【毕业设计】蓝牙灯:支持一键设置情景模式、无极调光调色

蓝牙灯:支持一键设置情景模式、无极调光调色 产品概述 ● 功能简介 界面使用最广泛的四页面设计,分别为:主页、情景、设备、发现。 主页是核心功能,实现一键连接蓝牙灯、自由调节颜色、亮度、设置定时关灯等功能。 情景页是保存用户设置的情景模式,可以根据使用场景不同快速切换至对应的工作模式。 设备页可以管理多台蓝牙灯。 发现页提供一些智能家居相关资讯。 ● 适用平台 iOS 8 ~10.2 ATTitleBar 支持横向滑动切换tab,并具有点击涟漪效果。详见@ATKit。 titlebar是在app中广泛应用的一种tab设计。我写的这个小框架模仿Google的Material Design设计,涟漪效果代码由@MaterialControls框架改写。 页面较多时采用类似tableview的懒加载模式,只加载需要显示的几页,减少内存占用,提高流畅度。 ReactiveCocoa 本项目大量使用了@ReactiveCocoa框架进行响应式编程,大幅简化代码、提高可读性。 RAC的订阅机制使得一对多传值有了新的选择,如蓝牙中心设备。 RAC的信号监听机制使得我更容易根据需要定制个性化控件。如带翻转、旋转效果的tabbar、带缩放和回弹效果的slider等,使app的界面栩栩如生。 CBCentralManager CBCentralManager是蓝牙类app的核心,本项目在编写这部分代码时使用了链式语法进行封装,外界调用起来十分方便。 ATCarouselView 轮播图也是在app中广泛存在的一种自定义控件,我将这部分代码封装至@ATKit中,以Pods导入方式使用,便于维护和扩展,同时也使得本项目代码更加简洁。 部分app的轮播图可以根据下方列表的滑动而改变高度或者添加蒙版效果,我目前实现了改变高度的功能。 此外,一些细节问题 启动动画与侧滑界面 本项目并没有开启侧滑界面,但是在编写的时候留有接口。 启动图片与主窗体下层的一个视图的背景图片相同,在启动的时候主窗体在屏幕右侧,以动画形式向左覆盖住图片。 UINavigationBar和UITabBar的分割线 如果需要自定义这两个bar,一般会把系统自带的一条分割线移除掉。 在模拟器中运行程序,观察层级结构,在执行Layout的时候移除掉对应层级的一个UIImageView。 UITabBar中间自定义按钮 在系统TabBar执行Layout的时候,重新排布原来的四个按钮,调整其大小和位置,然后新建一个按钮放在中间。 Smart Lamp 要点概述 核心:中心设备(CBCentralManager)、外设(CBPeripheral)。 中心设备模型通过代理获取中心设备与周边设备之间的各种状态信息。 自定义了主页头视图支持滑动切换页面,并封装成工具类(详见GitHub)。 对第三方库进行了二次封装,减少内部代码对第三方库的依赖,便于后期维护。 中心设备模型对多个页面间的传值采用了Rac信号传值。 中心设备模型使用了链式语法封装,使用方便快捷。 封装了轮播图控件,并自适应header高度的变化。 分析问题 解决问题 蓝牙通信的流程? 中心设备设置代理、开启扫描、停止扫描、获取周边对象、获取服务、获取特征、发送数据、接收返回数据。 如何实现多连? 用数组存储多个设备及其特征,发送数据时分别向每个连接的设备发送数据,或单独向选中的设备发送数据。 蓝牙灯硬件响应的极限时间大概在20ms,如果手指滑动取色器太快导致蓝牙灯反应迟钝滞后,这个问题通过定时器来解决,定义一个flag,每隔50ms使其置为1,只有当flag为1的时候才可以发送数据,每次发送完数据使其置为0,这样就保证了发送数据的时间间隔不会小于50ms。 如何选择最合适的传值方式? 最常用的三种Block、代理、通知。通知的特点是一对多,而代理和block是一对一传值,代理可以批量传递更多的信息,注重过程信息的传递,但是单例不能使用代理。block写法简练,功能强大,可以封装一段代码传递。 开灯时瞬间变亮太刺眼如何进行体验优化? 创建一个定时器,每次开灯的时候设置亮度为0,每隔50ms左右调用一次增加一点亮度,直至亮度达到关灯前的状态。 关于丢包问题如何解决? 可以对每一包发送的数据添加到数组里,每次从中取出一包发送,一定时间内没有收到返回值就重发。 如何防止数据被拦截? 通常采取加密措施。拟定一份加密协议,对数据进行打乱、插值、重组等。 via:https://github.com/xaoxuu/SmartLamp

计算机

计算机·圈子   首发

阿托 更新了
资源

【Demo】基于BERT 的中文数据集下的命名实体识别(NER)

基于BERT 的中文数据集下的命名实体识别(NER) 基于tensorflow官方代码修改。 环境 Tensorflow: 1.13 Python: 3.6 tensorflow2.0 会报错。 搜狐比赛 https://www.biendata.com/competition/sohu2019/ 在搜狐这个文本比赛中写了一个baseline,使用了bert以及bert+lstm+crf来进行实体识别。 其后只使用BERT的结果如下,具体评测方案请看比赛说明,这里的话只做了实体部分,情感全部为POS进行的测试得分。 使用bert+lstm+crf 结果如下 训练验证测试 代码 在souhu文件下 souhu_util.py 文件是取得预测的label后,转换为实体的数据 处理代码。 lstm_crf_layer.py 是lstm+crf层的代码 run_souhu.py 只用bert的代码 run_souhuv2.py bert+lstm+crf 注意 因为在处理中文时,会有一些奇怪的符号,比如\u3000等,需要你提前处理,否则label_id和inputs_id对应不上,因为bert自带的tokenization会处理掉这些符号。所以可以使用bert自带的BasicTokenizer来先将数据文本预处理一下从而与label对应上。 二 基于上课老师课程作业发布的中文数据集下使用BERT来训练命名实体识别NER任务。 之前也用了Bi+LSTM+CRF进行识别,效果也不错,这次使用BERT来进行训练,也算是对BERT源码进行一个阅读和理解吧。 虽然之前网上也有很多使用BERT的例子和教程,但是我觉得都不是很完整,有些缺乏注释对新手不太友好,有些则是问题不同修改的代码也不同,自己也在路上遇到了不少的坑。所以记录一下。 数据集 tmp 文件夹下 如上图,对数据集进行了分割,其中source是训练集中文,target是训练集的label。 test1 测试集,test_tgt 测试集label。 dev 验证集 dev-lable 验证集label。 数据格式 注意 BERT分词器在对字符分词会遇到一些问题。 比如 输入叩 问 澳 门 =- =- =- 贺 澳 门 回 归 进 入 倒 计 时 ,label :O O B-LOC I-LOC O O O O B-LOC I-LOC O O O O O O O 会把输入的=- 处理成两个字符,所以会导致label对应不上,需要手动处理一下。比如如下每次取第一个字符的label。 其实这个问题在处理英文会遇到,WordPiece会将一个词分成若干token,所以需要手动处理(这只是一个简单处理方式)。 类别 其中共设置了10个类别,PAD是当句子长度未达到max_seq_length时,补充0的类别。 CLS是每个句首前加一个标志[CLS]的类别,SEP是句尾同理。(因为BERT处理句子是会在句首句尾加上这两个符号。) 代码 其实BERT需要根据具体的问题来修改相对应的代码,NER算是序列标注一类的问题,可以算分类问题吧。 然后修改的主要是run_classifier.py部分即可,我把修改下游任务后的代码放到了run_NER.py里。 代码中除了数据部分的预处理之外,还需要自己修改一下评估函数、损失函数。 训练 首先下载BERT基于中文预训练的模型(BERT官方github页面可下载),存放到BERT_BASE_DIR文件夹下,之后将数据放到NER_DIR文件夹下。即可开始训练。sh run.sh 实验结果 可以基于验证集看到的准确率召回率都在95%以上。 下面可以看看预测测试集的几个例子。 下图为使用BERT预测的类别。可以与真实的类别对比看到预测还是很准确的。 真实类别如下图。 总结 其实在读了BERT的论文后,结合代码进行下游任务的微调能够理解的更深刻。 其实改造下游任务主要是把自己数据改造成它们需要的格式,然后将输出类别根据需要改一下,然后修改一下评估函数和损失函数。 如下图根据具体的下游任务修改label即可。如下图的第四个就是在NER上进行修改, 之后会写一篇Attention is all you need 和 bert论文的详解,会结合代码来解释一下细节,比如Add & Norm是如何实现的,为什么要Add & Norm。 == 感觉不用写了 bert已经火遍大街了 不重复造轮子了。建议大家直接莽源代码和论文。 最后BERT还有很多奇淫技巧需要大家来探索,比如可以取中间层向量来拼接,再比如冻结中间层等等。 后来自己又用pytorch版本的BERT做了几个比赛和做实验发论文,个人觉得pytorch版本的bert更简单好用,更方便的冻结BERT中间层,还可以在训练过程中梯度累积,直接继承BERTmodel就可以写自己的模型了。 个人建议 如果自己做比赛或者发论文做实验用pytorch版本.. pytorch已经在学术界称霸了..但是工业界tensorflow还是应用很广。 参考 : https://github.com/google-research/bert https://github.com/kyzhouhzau/BERT-NER https://github.com/huggingface/transformers pytorch版本 来源https://github.com/xuanzebi/BERT-CH-NER

  • 1
  • 27
  • 28
  • 29
  • 46
前往