第623章 这框架简直是神器!(2 / 3)
里面列著各种奇怪的函数名。
两人仔细看著文档的解释。
里面有一个叫卷积神经网络的封装层。
两人平时研究的都是些传统的机器学习算法,对这种结构並不算特別清楚。
直到看到文档里清清楚楚地写著:该模块通过卷积核提取局部特徵,极为適用於图像识別与计算机视觉领域。
“图像识別?”郭长征敏锐地抓住了这个词。
“我们下午吃饭的时候,討论的李飞飞教授那个imagenet数据集,不就是图像分类吗?”
楚一航一拍桌子:“绝了!连这种专门针对图像的模块都提前封装好了。”
“这简直就是给咱们量身定製的武器库啊。”
两人对著这些功能模块,越討论越兴奋。
“一航,別光看著眼馋了,纸上得来终觉浅。”郭长征提议。
“咱们现在就动手,按这个文档,写一个简单的几层网络试试水。”
“好嘞。”楚一航立刻切换到代码编辑器。
按照平时用cuda编写底层算力代码的习惯,楚一航习惯性地准备先写一堆內存分配的语句。
在以往,用英伟达的cuda写代码,繁琐。
程式设计师必须手动在主机的內存里开闢空间,再在显卡的显存里开闢空间。
然后要把数据从主机复製到显卡,接著手动设置线程块和网格的大小。
稍微设置不合理,显卡就直接罢工不干。
算完之后,还得再把数据从显卡慢吞吞地拷回主机。
但当楚一航按照tensorflow的文档指引敲击键盘时,他发现那些全都不需要了。
他只需要定义好数据格式,声明好网络层数,框架的底层执行引擎会自动接管所有的硬体资源调度。
不到二十行代码。
简洁,优雅。
“这就写完了?”楚一航自己都不敢相信。
“这几十行代码,放以前用c语言加cuda手搓,至少得写大半天,还得调试一整天。”
郭长征凑在屏幕前,反反覆覆检查了三遍代码逻辑。
“没有手动分配显存,没有显式的数据拷贝,完全是业务逻辑的代码。”
郭长征感嘆道:“这框架的抽象能力太强了,所有的脏活累活都在底层被tensorflow干完了。”
两人开始尝试运行这段代码。
虽然只是输入了一些隨机生成的测试数据,但终端里立刻列印出了每一层数据维度的变化,以及最终输出的结果。 ↑返回顶部↑
两人仔细看著文档的解释。
里面有一个叫卷积神经网络的封装层。
两人平时研究的都是些传统的机器学习算法,对这种结构並不算特別清楚。
直到看到文档里清清楚楚地写著:该模块通过卷积核提取局部特徵,极为適用於图像识別与计算机视觉领域。
“图像识別?”郭长征敏锐地抓住了这个词。
“我们下午吃饭的时候,討论的李飞飞教授那个imagenet数据集,不就是图像分类吗?”
楚一航一拍桌子:“绝了!连这种专门针对图像的模块都提前封装好了。”
“这简直就是给咱们量身定製的武器库啊。”
两人对著这些功能模块,越討论越兴奋。
“一航,別光看著眼馋了,纸上得来终觉浅。”郭长征提议。
“咱们现在就动手,按这个文档,写一个简单的几层网络试试水。”
“好嘞。”楚一航立刻切换到代码编辑器。
按照平时用cuda编写底层算力代码的习惯,楚一航习惯性地准备先写一堆內存分配的语句。
在以往,用英伟达的cuda写代码,繁琐。
程式设计师必须手动在主机的內存里开闢空间,再在显卡的显存里开闢空间。
然后要把数据从主机复製到显卡,接著手动设置线程块和网格的大小。
稍微设置不合理,显卡就直接罢工不干。
算完之后,还得再把数据从显卡慢吞吞地拷回主机。
但当楚一航按照tensorflow的文档指引敲击键盘时,他发现那些全都不需要了。
他只需要定义好数据格式,声明好网络层数,框架的底层执行引擎会自动接管所有的硬体资源调度。
不到二十行代码。
简洁,优雅。
“这就写完了?”楚一航自己都不敢相信。
“这几十行代码,放以前用c语言加cuda手搓,至少得写大半天,还得调试一整天。”
郭长征凑在屏幕前,反反覆覆检查了三遍代码逻辑。
“没有手动分配显存,没有显式的数据拷贝,完全是业务逻辑的代码。”
郭长征感嘆道:“这框架的抽象能力太强了,所有的脏活累活都在底层被tensorflow干完了。”
两人开始尝试运行这段代码。
虽然只是输入了一些隨机生成的测试数据,但终端里立刻列印出了每一层数据维度的变化,以及最终输出的结果。 ↑返回顶部↑