1.目标检测|SSD原理与实现
2.Tensorflow模型量化4 --pb转tflite(uint8量化)小结
3.人脸识别 —— face-api.js 简介
4.深度学习中Flatten层的作用
5.SSD学习笔记
6.ssd算法理解及与两阶段算法的区别
目标检测|SSD原理与实现
目标检测领域近年来取得了显著进展,主流方法大致分为两派:two-stage方法如R-CNN系列,和one-stage方法如SSD和YOLO。本文将深入解析SSD算法,它是one-stage方法的代表,全名Single Shot MultiBox Detector。捕鱼棋牌源码下载
与R-CNN系列不同,SSD采用一步到位的方式进行检测,避免了候选框生成和分类回归的两阶段。尽管速度较快,但均匀密集采样导致训练困难,尤其在处理正负样本不平衡问题上。SSD通过改进,如利用多尺度特征图检测不同大小的目标,采用卷积直接进行检测,以及设置不同尺度和长宽比的先验框,有效提升了准确度和速度,尤其是对于小目标检测。
SSD的核心理念包括:利用多尺度特征图(如8x8和较大的特征图),采用卷积层进行直接检测,以及设置多样化的先验框以适应目标的形状变化。每个特征图单元预测多个边界框,每个框有独立的置信度和位置信息。预测过程涉及边界框编码和解码,以及variance参数的调整。
网络结构方面,SSD以VGG为基础,通过扩展卷积层和调整池化层,获取不同尺度的特征图进行检测。SSD模型中,友讯APP源码有6个特征图用于检测,每个特征图有特定的先验框设置。训练时,采用先验框匹配策略来平衡正负样本,采用hard negative mining确保样本平衡,损失函数包括位置误差和置信度误差。
预测过程中,对每个预测框进行分类、置信度过滤、解码和非极大值抑制,最终得到检测结果。性能评估显示,SSD在速度和准确度上优于YOLO,且在小目标检测上有所改进。SSD的优化tricks和不同版本的性能对比也在文中详细分析。
本文提供的TensorFlow实现展示了SSD的Inference过程,包括参数定义、网络构建和预测流程。最后,作者提醒,尽管本文尽量准确,但仍可能存在一些不足,欢迎读者交流指正。
Tensorflow模型量化4 --pb转tflite(uint8量化)小结
Tensorflow模型量化4 --pb转tflite简介,主要讨论模型的量化问题,特别关注了模型转换过程中.pb转.tflite时的uint8量化。与之前探讨的fp和int8量化有所不同,这里特别涉及了量化中的参数设置。具体步骤包括准备参与量化操作的创号器源码训练模型,如tensorflow-object-detection API 得到的ssdlite_mobilenet_v2,导出为.frozen_inference_graph.pb文件。获取模型的输入输出节点,通常通过模型解析过程来确定。量化阶段通常包括使用工具如TFLiteConverter或TOCO,以及特别关注uint8量化时的参数。
重点在于参数设置:
1. 选择输出范围为[0,]对应default_ranges_min =0,default_ranges_max=,由于所选模型的输入tensor值范围一般为[-1,1],需设置mean = .5, std_dev = .5。
转换后的结果通过tflite测试验证其有效性和正确性,确保了模型转换过程中的准确性和效能提升。最后,提及获取输入输出节点更高效的途径——使用神经网络模型可视化工具Netron,并分享了其简单易用的安装方式,有助于更直观地理解和操作模型解析过程。
此总结旨在提供一个全面的指导,帮助理解和实施Tensorflow模型量化过程中的关键步骤,特别是针对uint8量化时的参数设置和模型转换后的验证测试。
人脸识别 —— face-api.js 简介
face-api.js 是一个基于 TensorFlow.js 的 JavaScript 模块,它提供了三种卷积神经网络架构,用于人脸检测、识别和特征点检测。此模块内嵌了训练好的模型,能直接使用,无需自定义标注和训练,降低了成本。主要功能包括:
人脸检测:face-api.js 使用 SSD(Single Shot Multibox Detector)算法,基于 MobileNetV1 的java如何重写源码卷积神经网络,具有边界框预测层,能识别每张人脸及其概率分数。提供两种模型:The Tiny Face Detector 和 SSD Mobilenet V1。The Tiny Face Detector 适合需要快速检测,但对小脸检测准确性较低;SSD Mobilenet V1 检测更准确,但加载时间长,内存占用大。检测时,无论图像中人脸数量,均需执行人脸检测。
人脸特征检测:使用 点人脸特征检测模型,一个简单的卷积神经网络,返回 个人脸特征点,用于后续的人脸对齐和识别。提供 kb 和 kb 两种模型选择,大模型更准确,适用于精确度要求高的场景。
人脸识别:在检测和对齐人脸后,将人脸特征输入人脸识别网络,输出一个 维特征向量。通过计算向量距离判断相似度。
获取人脸图像:利用 WebRTC 的 getUserMedia 方法获取音视频数据,其中 MediaTrackConstraints 参考 MDN 文档。
获取人脸特征:本文使用 The Tiny Face Detector 与特征识别模型结合效果更佳。调整参数包括 inputSize 和 scoreThreshold,分别控制模型大小和检测准确性。
尝试开源 demo:可以参考 gitee.com/TsMask/face-a... 或 face-api.js 作者提供的示例源码 examples-browser。
开始编程:导入脚本、加载模型数据、小麦助教源码 下载从输入图像获取人脸描述。神经网络可接收多种输入,如 HTML 图像、画布、视频元素或张量。通过 faceapi.allFaces 执行全部工作,或手动获取人脸定位和特征点。结果可视化后,进行人脸识别。通过比较输入图像人脸描述符与参考数据的距离,找出最匹配的描述符。最后,显示检测结果。
深度学习中Flatten层的作用
学习tensorflow2.0版本的SSD网络代码时,接触到了Flatten层,了解其功能和应用。
Flatten层的实现位于tensorflow.keras.layers.Flatten()类中,其主要功能是将输入数据的一维化。这个过程特别重要,因为它连接了卷积层与全连接层,通常在深度学习模型中进行。Flatten层对batch大小无影响。
在分析vgg网络结构时,Flatten层的使用显而易见。然而,在后续网络发展中,如inceptionV3,开始采用GlobalAveragePooling2D替代Flatten层,这种改进显著减少了参数量,有效避免过拟合问题。通过对比vgg与inceptionV3的参数,可以直观看出改进的效果。
SSD学习笔记
深入理解SSD的关键要素,从结构到训练细节 1. SSD模型构建基于VGG的Base network,预训练于ILSVRC CLS-LOC数据集,调整FC6和FC7为卷积层,移除dropout和fc8层
fine-tuning时,初始学习率为[公式],momentum设为0.9,weight decay为0.,batch size为,学习率策略随数据集调整
使用Hole算法扩展感受野,如pool4 stride从2变为1时,后续conv5_1至fc6的hole size分别为2、4
2. SSD训练中的匹配规则feature map cell与default box的概念,每个cell对应多个固定大小的default box
prior box与ground truth box的匹配遵循双重原则:IOU最大化与阈值判断,确保每个ground truth至少有一个匹配
TensorFlow和Pytorch版本的匹配策略区别
3. variance参数的作用 variance用于调整预测box与真实box的误差,通过放大误差来增强梯度,加速训练 4. 选择不同尺度default box的原因anchor boxes的大小固定,根据ground truth的尺寸调整层级,确保IOU最大化,提高训练精度
5. Default Box的尺寸设计与分析根据scale和ratio生成多尺度的default boxes,类似Faster R-CNN的Anchor机制
conv4_3层的L2归一化处理,针对特定层权重分布差异的优化
6. SSD的位置回归与归一化conv4_3层仅做L2归一化,调整权值分布,增强训练稳定性
位置回归形式:每个先验框预测独立的置信度和边界框位置,涉及编码和解码过程
variance参数的选择性包含影响解码方式
7. 总结预测值计算特征图大小决定预测值总数,卷积核数量对应检测任务的完成
ssd算法理解及与两阶段算法的区别
文章对SSD算法的原理进行了详细阐述,有助于读者理解。
文章对SSD-TensorFlow进行了逐句注释。
文章首先说明了SSD与两阶段算法的区别。
“作者提出了SSD模型,将输出的bounding boxes视为一组不同尺度、不同大小的boxes。简而言之,在不同尺度的feature map上设置了系列不同大小的default boxes,实现了多尺度检测。这种思路与faster rcnn中的anchor boxes类似。然而,anchor boxes实现多尺度的方式不是在不同feature map上进行回归,而是直接设置不同比例的boxes。与rcnn系列模型相比,SSD取消了region proposal的过程,即没有像素、特征重采样(对应于faster rcnn的ROI Pooling)的过程,提升了运行速度。同时,得益于多尺度检测,精度上并未损失,甚至在x大小的上超过了faster rcnn。”
“基于深度学习的目标检测网络主要有两大类,一类是以RCNN为代表的region proposals方法,这类方法速度较慢,最快的faster rcnn在GPU上也只有7FPS;另一类是以YOLO为代表的基于回归的算法。YOLO虽然在速度上很快( FPS),但是精度较低。作者本文旨在解决速度与精度的矛盾问题,提升模型速度的同时,避免了精度损失。SSD和YOLO同属基于回归的算法。”
简单的关键点回归:将一幅图像提取到featrue maps,然后直接将整个featrue maps映射到要回归的点坐标和要回归的类别。
SSD算法思想:先将一幅图像提取到featrue maps,然后从c通道维度拍扁这个立方体(保持w和h维度),对其遍历,对每个像素位置(有通道维度的特征,比如1*的featrue map)映射到要回归的点坐标和要回归的类别。这种做法较为直接,对于一个map上的像素点,要回归出所有类别的置信度和此处的boundingbox。
“1.预测过程
这里详细说明了如何回归,即“如何从特征图上1个像素位置映射到想要回归的坐标和类别”这个步骤。
然后,问题来了。训练过程中,如何分配特征图每个像素位置处的监督坐标和监督类别?
“首先需要对每一个ground truth匹配相应的default box,一个ground truth可以匹配多个default box。如果ground truth和default box的重叠率大于一个阈值,则匹配为正样本,否则为负样本。
目标函数:偏置偏差损失+类别置信度损失
default boxes大小设置:根据相应的特征图的尺度,设置不同大小的default box,具体计算公式参见论文。作者使用了6个default box。其他trick:Hard negative mining:只有那些有最高训练损失(training loss)的负面样本(negative example)子集才会在每次训练迭代中被使用。SSD的「正负」比一直保持在1:3。Data augmentation:随机裁剪”
“主要创新之处在于:”
“ssd思想:因为可以有单独产生先验框的层,而且输出可以都是已知先验框的坐标和类别信息;也就知道了每个正样本先验框与它的groudtruth的坐标差,这就是每个正样本先验框的监督信号。因此,只要给每个先验框定义出分类和坐标节点信息(以承载其被预测为正确groudtruth的预测信息)即可解决问题了。由于先验框个数是遍历feature map得到,所以最终参与预测的先验框很多,这每个先验框,类似于从整个feature map中抽离出局部feature map,符合人眼日常多目标检测原理。”
“ssd为什么效果好?
MTCNN和SSD实现了两种不同的检测策略
MTCNN:首先构建图像金字塔,然后使用固定大小的滑动窗口(由全卷积网络PNet实现)在金字塔每一级滑动,对每个滑动窗口分类回归,由于图像金字塔对原图信息有一定程度的损失(做resize),同时由于特征提取只使用一个网络,所以对于不同尺度的目标提取特征不够充分。
SSD:图像大小不变,采用不同大小的滑动窗口(由不同特征图实现),并对每个滑动窗口分类回归。不同的特征图对应了不同大小的滑动窗口,实现了对不同大小滑动窗口的特征提取,由于不同特征图使用了不同CNN结构,提取特征更加充分。”
政治从科学中吸取经验:
1)科学:SSD其实就是对6个不同特征图对应的所有priorbox进行分类和回归,每个特征图对应的priorbox其实就是每个特征图上每个像素点对应的感受野,而这些感受野其实就是滑动窗口,所以SSD本质上就是实现了对输入图像中所有滑动窗口的分类和回归
2)人民代表大会制度:从底层(conv4-3)选取代表,解决底层特有问题(小尺度)。
细节详解:
“voidcn.com/article/p-ki...
1)从原图采样crop出patch后reisze到*作为训练样本,自适应输入图像大小。
//对于batch_sampler的解释:(train.prototxt)
batch_sampler {
sampler {
min_scale: 0.3 #scale是patch随机框和原图的面积比
max_scale: 1.0
min_aspect_ratio: 0.5 #长宽比
max_aspect_ratio: 2.0
}
sample_constraint {
min_jaccard_overlap: 0.3 #随机框和原ground truth的jaccard overlap
}
max_sample: 1
max_trials: #最大迭代寻找次数,一张寻找符合条件的bbox的次数
}
7个采样器,对应生成7个样本?IOU=0.1,0.3,0.5,0.7,0.9。对于每个采样器,随机选择一个来裁剪和标注数据。
2)怎样获取小尺寸目标?
ExpandImage是缩小,达到zoom out的效果:先做一个比原图大的画布,然后随机找一个放原图的位置将原图镶嵌进去,像天安门上挂了一个画像。这在SSD原文中提到的zoom out缩小倍(4×4,3.6节)来获得小对象的方法。
这对控件检测是个缺点。控件目标的尺寸分布整体偏小,做完zoom操作后,整体更加偏小。当去掉zoom操作后,效果变好,但是泛化能力降低。这也是ssd中data augment对效果提升很大的原因。
3)多种数据增强方法怎么排列组合?
先扰动,后裁剪。
SSDè½ä¸è½å¨PEçç¯å¢ä¸å®è£ WIN7
SSDè½ä¸è½å¨PEçç¯å¢ä¸å®è£ WIN7
å¯ä»¥åãå¨peç¯å¢ä¸å®è£ win7ç³»ç»çæ¥éª¤ï¼
åå¤å·¥ä½ï¼â 使ç¨å¤§ç½èè£ æºçï¼å¶ä½ä¸ä¸ªå¤§ç½èuçå¯å¨çâ¡å°ä¸è½½å¥½çghost win7ç³»ç»æ 象å æ¾å ¥å¶ä½å¥½ç大ç½èuçå¯å¨çä¸ã
ä¸ãå¶ä½uå¯å¨ç
第ä¸æ¥
ä¸è½½å¹¶ä¸å®è£ 好大ç½èè£ æºçï¼å¼å¯å®è£ 好ç大ç½èè£ æºçï¼æå ¥uççå¾ è½¯ä½æå读åå°uçä¹åï¼ç¹éâä¸é®å¶ä½å¯å¨uçâè¿å ¥ä¸ä¸æ¥æä½ã
第äºæ¥
å¨å¼¹åºçèµè®¯æ示è§çªä¸ï¼ç¹éâç¡®å®âè¿å ¥ä¸ä¸æ¥æä½ã
第ä¸æ¥
èå¿çå¾ å¤§ç½èè£ æºçuçå¶ä½å·¥å ·å¯¹uçåå ¥å¤§ç½èç¸å ³èµæçè¿ç¨ã
第åæ¥
å®æåå ¥ä¹åï¼å¨å¼¹åºçèµè®¯æ示è§çªä¸ï¼ç¹éâæ¯ï¼Yï¼âè¿å ¥æ¨¡æçµèã
第äºæ¥
模æçµèæåå¯å¨è¯´æ大ç½èuçå¯å¨çå·²ç»å¶ä½æåï¼æä½Ctrl+Altéæ¾æ»é¼ ï¼ç¹éå ³éè§çªå®ææä½ã
äºãå®è£ ç³»ç»
第ä¸æ¥
å°å¶ä½å¥½ç大ç½èuçå¯å¨çæå ¥u *** ä»é¢ï¼å°å¼ä½¿ç¨è 建议å°uçæå¨ä¸»æºæºç®±åç½®çu *** ä»é¢ä¸ï¼ï¼ç¶åéå¯çµèï¼åºç°å¼æºç»é¢æ¶ï¼éè¿ä½¿ç¨å¯å¨å¿«æ·é®å¼å¯¼uçå¯å¨è¿å ¥å°å¤§ç½è主éåä»é¢ï¼éæ©âããæ§è¡å¤§ç½èWin8PEé²èå±çï¼æ°çµèï¼âå车确认ã
第äºæ¥
ç»å ¥å¤§ç½èè£ æºçpeç³»ç»æ¡é¢ï¼ç³»ç»ä¼èªå¨å¼¹åºå¤§ç½èPEè£ æºå·¥å ·è§çªï¼ç¹éâæµè§ï¼Bï¼âè¿å ¥ä¸ä¸æ¥æä½ã
第ä¸æ¥
ç¹éå¼å¯åæ¾å¨uçä¸çghost win7ç³»ç»æ 象å ï¼ç¹éâå¼å¯ï¼Oï¼âåè¿å ¥ä¸ä¸æ¥æä½ã
第åæ¥
çå¾ å¤§ç½èPEè£ æºå·¥å ·æåæéçç³»ç»æ¡£æ¡åï¼å¨ä¸æ¹éæ©ä¸ä¸ªç£ç¢åå²æ§½ç¨äºå®è£ ç³»ç»ä½¿ç¨ï¼ç¶åç¹éâç¡®å®ï¼Yï¼âè¿å ¥ä¸ä¸æ¥æä½ã
第äºæ¥
ç¹éâç¡®å®ï¼Yï¼âè¿å ¥ç³»ç»å®è£ è§çªã
第å æ¥
æ¤æ¶èå¿çå¾ ç³»ç»æ¡£æ¡éæ¾è³æå®ç£ç¢åå²æ§½çè¿ç¨ç»æã
第ä¸æ¥
éæ¾å®æåï¼çµèä¼éæ°å¯å¨ï¼ç¨åå°ç»§ç»æ§è¡å®è£ win7ç³»ç»åç»çå®è£ æ¥éª¤ï¼ææå®è£ å®æä¹å便å¯è¿å ¥å°win7ç³»ç»æ¡é¢ã
photoshopè½ä¸è½å¨window7ç¯å¢ä¸å®è£ åï¼å¯ä»¥çï¼win7çç¸å®¹æ§æ¯vistaç好
hp probook sç³»åè½ä¸è½å¨win7ä¸å®è£ xpç³»ç»?æ¨å¥½ï¼æè°¢æ¨éæ©æ æ®äº§åã
æ ¹æ®æ¨çæè¿°ï¼å»ºè®®æ¨åèä¸åèµè®¯ï¼
1.建议æ¨ä½¿ç¨windowsåä¸ç³»ç»ï¼ä¸ºäºä¿è¯ç¬è®°æ¬æ§è¡ç稳å®æ§åå®å ¨æ§ï¼hpå®æ¹ä¸å»ºè®®ä½¿ç¨è å®è£ åç³»ç»ï¼ä¹æ²¡æåç³»ç»æ§è¡æ¹é¢çç¸å ³èµæã
2.é常æ åµä¸ï¼å¦æå å®è£ é«çæ¬ç³»ç»åå®è£ ä½çæ¬ç³»ç»ï¼æå¯è½åºç°æ æ³è¿å ¥ç³»ç»æ¹é¢çæ åµã
3.æ¨å¯ä»¥èè使ç¨åä¸çé¢è£ ç³»ç»ï¼ä»¥å å¼åæªç¥é®é¢ï¼å½±åç¬è®°æ¬çæ£å¸¸ä½¿ç¨ã
4.å®è£ åä¸xpç³»ç»çæ¹æ³æ¨å¯ä»¥åèï¼
ç±äºç¬è®°æ¬éç¨sata硬ç¢ï¼æ®éçxpç³»ç»å ç¢ä¸å«sata驱å¨ï¼å¨sata硬ç¢æ¨¡å¼ä¸æ æ³è¿è¡ç³»ç»å®è£ ãå æ¤ï¼æ³è¦å®è£ xpç³»ç»ï¼åéè¦å¨biosä¸éæ©AHCIé项ï¼è®¾å®æ¥éª¤ä¸ºï¼å¼æºä¸åç¹éFè¿å ¥BIOSï¼å¨system configuration-device configuration-SATAçé项设å®ä¸ºdisable,åéæ©File -- Saving Changes & exit--yesåæ¡£éåºå³å¯ï¼æè å¯ä»¥ä½¿ç¨å å«sata硬ç¢é©±å¨çxpå ç¢å®è£ ç³»ç»ã
Windows XPçå®è£ è¿ç¨ï¼æ¨å¯ä»¥åèä¸ä¸å®æ¹æ件èµæï¼
:h.2.hp./portal/site/hpsc/template.PAGE/action.process/public/kb/docDisplay/?
javax.portlet.action=true&spf_p.tpst=kbDocDisplay&javax.portlet.begCacheTok=.vigte.cachetoken&spf_p.prp_kbDocDisplay=
wsrp-interactionState%3DdocId%Demr_na-c%CdocLocale%Dzh_CN%CcalledBy
%DSearch_Result&javax.portlet.endCacheTok=.vigte.cachetoken
å¸æ以ä¸åå¤è½å¤å¯¹æ¨ææ帮å©ã
å¦æ以ä¸èµè®¯æ²¡æ解å³æ¨çé®é¢ï¼æ¨å¯ä»¥ç»éhpç½è·¯çº¿ä¸è天室hp../chatï¼å线ä¸å·¥ç¨å¸å¨è¯¢ï¼å¸®å©æ¨è¿ä¸æ¥è§£å³é®é¢ã æ´å¤äº§åèµè®¯èµè®¯å°½å¨hp../ã
ç»æ¢¦å®è£ ç¯å¢æ¯å¦è½å¨win7ç³»ç»ä¸å®è£ ?å¯ä»¥
建议使ç¨phpnowæ建PHPç¯å¢
æä¹å¨win7ç¯å¢ä¸å®è£ ubuntu?ç¨ EasyBCD
å¾ç®å
title Install Ubuntu
root
kernel /vmlinuz boot=casper iso-scan/filename=/ubuntu-.-desk-i.iso ro quiet splash locale=zh_CN.UTF-8
initrd /initrd.lz
TDSUSBè½ä¸è½å¨win7 ä½ç¯å¢ä¸è£ è½½åï¼
ä¸è½
å¦ä½å¨win7ç¯å¢ä¸å®è£ tensorflowé¦å ä¸è½½anaconda å¨æ¤éè¦è®°ä½,å®è£ çæ¯4.2çæ¬,4.3çè¯,ä¼æå¾å¤å,é®é¢æ æ³è§£å³,å¨è¿éå¯ä»¥å»anaconda å®ç½ä¸è½½,å¦æè§å¾æ ¢çè¯,å¯ä»¥èèå°æ¸ åçanacondaæºéé¢ä¸è½½è®°ä½ anaconda-4.2.1
ä¹åè¿è¡anacondaçå®è£ ,ä¸è·¯ç¹énextå°±å¯ä»¥äº,å®è£ å®æ¯ä¹å,å¨cmdä¸è¾å ¥python,å°±å¯ä»¥çå°anaconda å®è£ æå
ä¹åç¨ç®¡çå身份æ§è¡cmdç¨å¼,è¿éæ¯éè¦ç,é¿å ä¸äºè®¸å¯æçé误
å®è£ pip,å°ç½ä¸å»æç´¢pipçå®è£ å ,解å缩ä¹å,å°ç®å½ä¸æ§è¡python setup.py install,å®æå®è£ ,pipçæ¬æ好æ¯8.0.1以ä¸ç,æ好æ¯9.0
ä¹åè¿å ¥å°anacondaçå®è£ ç®å½ä¸,cd C:\Program Files\Anaconda3,
ç¶åå¼å§å®è£ tensorflow cpu ä¸é®å®è£
pip install --upgrade --ignore-installed tensorflow
gpuçæ¬ç
pip install --upgrade --ignore-installed tensorflow-gpu
ä¸è¬cpuå¯ä»¥ç´æ¥å®è£
ä¹åæ们å¨pythonç¯å¢ä¸è¾å ¥import tensorflow as tfå°±å¯ä»¥äºæ§è¡ä¸äºç®åå½ä»¤äº
åå¤
å®è£ tensorflowéè¦æ¯è¾æ°çnumpyï¼windowsèªå¸¦çubuntuæºéçnumpy太èï¼éè¦èªè¡ç¼è¯å®è£ numpyã
å®è£ numpyéè¦openblasæè mklï¼æ以é¦å å®è£ openblasã
å®è£ openblas
openblasæ¯å人ç¼åé«æè½è¿ç®åºï¼è½å¤æ大çå énumpyã
ä¸è½½openblasåªéè¦ git clone git:github./xianyi/OpenBLAS.gitå³å¯,ç±äºopenblasæ¯fortanç¼åè¿éè¦å®è£ gfortanï¼
ç¶å sudo make cf=gfortan && make installã
é¢è®¾å®è£ è·¯å¾åºè¯¥æ¯ /opt/OpenBLASã
å®è£ numpy
numpyçä¸è½½å°å git clone git:github./numpy/numpy.git ãè¿å ¥numpyççä¸è½½èµæ夹ï¼ç¶åä¿®æ¹ä¸site.cfgè¿æ¯numpyçbuild configï¼æéé¢çopenblasé ç½®
æ£ç¡®ã
å®è£ tensorflow
å®è£ tensowflowæ¯æç®åçå°±ä¸è¡
ä¸è½½cuDNNå¥ä»¶ï¼ç¶åè¿è¡è§£åï¼å°å¾å°çincludeãbinãlibä¸çæ¡£æ¡åå«å¤å¶å°CUDAå®è£ è·¯å¾ä¸å¯¹åºçincludeãbinãlibæ¡£æ¡ä¸ï¼å¹¶å°C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\bin;C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\lib\xè¿ä¸¤ä¸ªè·¯å¾å å ¥ç¯å¢åæ°ä¸å³å¯ã