• 为了保证你在浏览本网站时有着更好的体验,建议使用类似Chrome、Firefox之类的浏览器~~
    • 如果你喜欢本站的内容何不Ctrl+D收藏一下呢,与大家一起分享各种编程知识~
    • 本网站研究机器学习、计算机视觉、模式识别~当然不局限于此,生命在于折腾,何不年轻时多折腾一下

关于keras多输入的一些问题

Tensorflow admin 10个月前 (07-13) 776次浏览 0个评论 扫描二维码

tf2.0是要力推keras,最近将之前的代码改造成keras(挤时间自己改的,还在测试),这中间看着keras官方文档加上搜索,有些点其实还是存在一定的疑问。

其实主要的问题就是在这模型输入输出这块,keras在构造网络这块还是比较简单的,看着官网的例子关于函数式api提供的例子都是非常的简单。

基本上套路就是一个Input 然后FC之类的就到Output,然后建立模型,fit数据就完成了。

输入的数据格式是数据都事先构造好了,就是现成的不需要经过任何的变换就可以直接使用,不需要做额外的变换。

但是在工程上可就不止这么简单了,现在数据流的获取是使用pipline来实现数据的读取,数据都是存在hdfs上。

tf.data模块去解析,然后返回的是一个迭代器,具体到每一个输入就是一个字典,在pipline读取到数据之后我们需要对这些元数据做一些处理:

  • category 特征 embedding
  • 数值特征
  • sparse特征处理

目前主要的是这三类特征,这么多特征都是需要指定相应的输入去作为模型的输入。官网的例子虽然提到多输入与多输出,但是在这里说一下是因为第一次看完真的还是不知道怎么下手,说是知道有这个动心,但是吧还是不知道怎么做,可能现在就是对keras还是不太熟悉导致。

现在就说一下处理这个的工程的思路:

#定义inputs这个列表就是把所有的Input记录下来作为model的输入
inputs=[]
#处理category类型
for cate in your_category_list:
    input=Input((1,),name=cate)
    inputs.add(input)
    #embedding处理之类的
#数值类特征
for num in your_numerical_list:
    input=Input(your_shape)
    inputs.add(input)
#sparse 特征,这个处理起来稍微有点麻烦,因为有些sparse特征后续需要处理成embedding向量
你需要构造两个Input
(1)indices
(2)values 
 #在获得输入之后你需要transform操作,你需要自定义layer去处理这个问题,因为keras还没有sparse_embedding_lookup
的功能,你要使用tf的东西那么你就需要自定义layer去处理这个,这就是需要注意的地方

之前就像在网上有没有类似的教程就是上面这样去说明一下多输入的问题,但是大部分都是照搬官方教程,其实上面的处理过程实际上包含了多输入与自定义layer的过程。


如果你遇到keras多输入多输出相关的问题,可以留言。


Deeplearn, 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明关于keras多输入的一些问题
喜欢 (1)
[@lc@]
分享 (0)
admin
关于作者:
互联网行业码农一枚/业余铲屎官/数码影音爱好者/二次元

您必须 登录 才能发表评论!