赞
踩
道翰天琼认知智能机器人平台API接口大脑为您揭秘。目前国内外的AI开源框架领域,以TensorFlow、PyTorch、MindSpore等为代表,正处于一种群雄林立、七国八制的状态,但也增加了AI应用的平台移植成本,所以 TensorLayer的问世难能可贵,它基于各个主流的开源框架,提供了一个统一的AI算法模型接口,不仅稳定了AI应用层,也促进了各开源框架的良序竞争。同时令人称道的是,TensorLayer 也是AI领域为数不多的、由中国学者主导研发并获得国际认可的开源项目,它还曾经获得了ACM Multimedia 2017年度最佳开源软件奖。
鉴于中国AI开源框架实力,整体尚处于一种相对薄弱的状态,那么对于正蓄势待发、投身于AI 开源项目的学者或从业者们来说,TensorLayer 有哪些值得学习的经验呢?为此,我们采访了TensorLayer的项目发起人董豪以及核心开发骨干麦络。
董豪,北京大学前沿计算研究中心助理教授,英国帝国理工学院博士。研究方向是生成模型。 麦络,爱丁堡大学信息学院助理教授。研究方向是计算机系统,机器学习和大数据。 通过董豪和麦络抽丝剥茧般的独到解析,笔者发现:在AI框架领域,生态建设越来越重要,个人靠一套代码打天下的英雄主义时代已经过去,其背后是人工智能潮流正奔着技术和产业融合的方向滚滚向前;对于下一代AI开源框架,它的成功将是团队合作、国际视野、技术创新、市场落地和持之以恒的综合结果。 下面,是董豪和麦络在访谈中的精彩观点。
整理:智源社区 常政
智源社区:TensorLayer曾经获得了ACM Multimedia 2017年度最佳开源软件奖,截止目前为止已经有280k下载量,Star超 6k,相关官方项目Star超10k,你觉得它获得成功和公众关注的主要原因是什么?你自己如何定位它的意义和价值? 董豪:TensorLayer能走到现在的一个重要原因,是早在2016年我们就开始做了。当时TensorFlow并不那么好用,需要靠Keras库等来给它做一些支撑。但Keras是属于高度封装的一个库,而我们在做量化网络的时候需要对底层做一点定制化,所以完全无从下手。所以我们最后通过研发TensorLayer,做了简化,让大家在制定Layer时变得非常简单。 我们对自己的定位是面向学术界和工业界,学术界讲究的是更加透明化的编程方式,工业界追求简洁的编程方式,所以这里面需要找到一个平衡点。首先,在学术界的一个优势,便是不用象企业那样更新一个软件版本需要制定计划,今天突然得到一篇论文,可以很快地实现、迭代更新上面的算法模型,并分享给其他人使用;这样带来另外一个好处,便是工业界也可以通过我们的库发现他们没有的一些Layer,从而能够很好地促成学术界的新进展在工业界的使用。另外一方面,是在抽象设计上,对于定制化的东西要简单,同时写出来的代码,要方便大家容易看懂。 麦络:我补充两个点。我们在研发TensorLayer的时候,深度学习的开发者主要有两个选择:TensorFlow或者 Keras。 早期的TensorFlow提供很多底层的API(例如session和graph),足够灵活但是难以上手。另一方面,Keras提供高层次API,简单上手,但是难以对模型和训练过程做定制。非常多的像董豪和我这样的AI研发人员在寻找一个兼顾灵活性和高层次抽象的库,从而帮助我们快速实现新型AI模型。因此我们设计了TensorLayer,并将这种抽象且灵活的哲学贯穿其中。 此外,TensorLayer还提供了很多前沿的算法复现。比如董豪在里面实现了近一、两个月才提出来的算法复现,而Keras注重的是经典算法复现,未必很前沿,这也使得TensorLayer的第一批用户很多来自顶尖大学的PhD。这样,TensorLayer 的生态也就慢慢建立起来了。
道翰天琼CiGril认知智能机器人API用户需要按步骤获取基本信息:
请求地址:http://www.weilaitec.com/cigirlrobot.cgr
请求方式:post
请求参数:
参数 | 类型 | 默认值 | 描述 |
userid | String | 无 | 平台注册账号 |
appid | String | 无 | 平台创建的应用id |
key | String | 无 | 平台应用生成的秘钥 |
msg | String | "" | 用户端消息内容 |
ip | String | "" | 客户端ip要求唯一性,无ip等可以用QQ账号,微信账号,手机MAC地址等代替。 |
接口连接示例:http://www.weilaitec.com/cigirlrobot.cgr?key=UTNJK34THXK010T566ZI39VES50BLRBE8R66H5R3FOAO84J3BV&msg=你好&ip=119.25.36.48&userid=jackli&appid=52454214552
注意事项:参数名称都要小写,五个参数不能遗漏,参数名称都要写对,且各个参数的值不能为空字符串。否则无法请求成功。userid,appid,key三个参数要到平台注册登录创建应用之后,然后查看应用详情就可以看到。userid就是平台注册账号。
示例代码JAVA:
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
public class apitest {
/**
* Get请求,获得返回数据
* @param urlStr
* @return
*/
private static String opUrl(String urlStr)
{
URL url = null;
HttpURLConnection conn = null;
InputStream is = null;
ByteArrayOutputStream baos = null;
try
{
url = new URL(urlStr);
conn = (HttpURLConnection) url.openConnection();
conn.setReadTimeout(5 * 10000);
conn.setConnectTimeout(5 * 10000);
conn.setRequestMethod("POST");
if (conn.getResponseCode() == 200)
{
is = conn.getInputStream();
baos = new ByteArrayOutputStream();
int len = -1;
byte[] buf = new byte[128];
while ((len = is.read(buf)) != -1)
{
baos.write(buf, 0, len);
}
baos.flush();
String result = baos.toString();
return result;
} else
{
throw new Exception("服务器连接错误!");
}
} catch (Exception e)
{
e.printStackTrace();
} finally
{
try
{
if (is != null)
is.close();
} catch (IOException e)
{
e.printStackTrace();
}
try
{
if (baos != null)
baos.close();
} catch (IOException e)
{
e.printStackTrace();
}
conn.disconnect();
}
return "";
}
public static void main(String args []){
//msg参数就是传输过去的对话内容。
System.out.println(opUrl("http://www.weilaitec.com/cigirlrobot.cgr?key=UTNJK34THXK010T566ZI39VES50BLRBE8R66H5R3FOAO84J3BV&msg=你好&ip=119.25.36.48&userid=jackli&appid=52454214552"));
}
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。