python偏导数
❶ App Store上有哪些冷门但逆天的 App
App Store 应用商店中有不少的应用APP,很多其实比我们常用的一些软件还好用,只是因为某些原因导致名气不大,不被大家熟知而已。而且一些都是一些素人开发者开发出来的,所以说在功能方面更加的贴合我们的生活,那么有哪些在在苹果APP Store上冷门却逆天的应用呢?
1、MathStudio(强大无敌)
这是一个致力于数学计算的工具,冷门至极毕竟没有那么多的学霸会喜欢用来搞什么数学计算研究一类的,而使用的基本上都是真正的内行人。所以自然冷门十足,但是却不可小看它,这个APP实力可谓是强大无比,对于简单的四则运算和什么函数、指数、对数、开方等运算都可以计算,更厉害的是有很多的高级的运算。
像高数中求极限、导数、多元函数的偏导数、算不定积分、画函数图像、方程图像更是小意思了。反正你高数上能用到的图像、公式基本上都能用它搞出来,最恐怖的是竟然自带一个编程环境,让人不得不怀疑这是哪个学霸研发出来的。
而且别看这么逆天的功能存在,它的内存超乎你想象,不要998只要区区4M左右就完成了,当然,这个 App 肯定有缺点就是价格有点贵好像两百多还是多少,不过绝对的物超所值!
2、Stellarium(虚拟天文馆)
这款软件适合那些对天文学抱有很大兴趣的朋友,当然你要是为了装装高内涵也可以。因为你有理他可以看你想看到的星星,还能知道是什么 星座 的星星, 对着天空,你往哪里摆,app上的星象图也会跟着动。这是一款十足的观星神器,只是用的人少打分更少。
3、 开眼
平时你看的很多短视频都是很庸俗们什么营养的,但是只要你下载了这款软件就可以避免再刷到那么多的奇葩。你只要用了这款软件绝对能学到 不少干货,而且这里 绝对没有很多无聊的东西,有的都是一些十分有用的东西,真正的让你做到开眼看世界。因为没有什么乱七糟八的东西,自然省却了我们不少的时间,对于想要学的人来说这是绝对纯净的软件。
4. 国家地理
对于那些想要 探索 其他国家神秘美景事件的人来说这是一个不容错过的软件,它的名字可能你曾经听说过。没错就是那个国家地理杂志,人家可是出了这款APP的,里面都是各地高清的图集、图片,让你一览各地的名胜古迹,云 旅游 绝对爽!
5、pythonista
这是一个强大的Python编辑器,不过想要完全的掌握好它就需要懂得一定的Python运作。若只从编辑器的角度来看,它无疑很优秀。支持多种颜色主题,强大的小键盘,输入联想,还内置了无数强悍的Python模块。而且他的厉害之处在于在懂的人手里直接变成一款神器,可以用来处理执行各种的脚本数据还可以建模、建动画、做个时钟等等,还可以做小 游戏 来玩,堪称强大。
6、好奇心日报
它绝对是新闻阅读类APP中的一股清流,没有博眼球的震惊派标题党,也没有密密麻麻的小广告,界面干干净净,看起来十分的舒服。除了简洁到性冷淡的界面,最吸引人的是它优质的内容,涉及到商业、 娱乐 、艺术、 科技 、 时尚 等各个方面,有新鲜独特的资讯,也有深刻的分析报道。
另外它还有特别有意思的栏目,比如:浮华日报、这世界、为什么读书等等,总之它的内容可以用高逼格、有深度、涨姿势来形容,早上起来上去刷一刷已经成了我的习惯了。
7、幕布
这是一个帮助你整理思路的一个想法工具,对于你做计划还是什么写文章、记录想法等都可以使用,它能将你的想法以结构框架的形式来展示出来,像思维导图一样,将重点整理清楚、条理疏理完善,对于你理清逻辑,整理思路,都有很大的帮助。更加厉害的是这款软件还能够支持PC端和手机端的同步,既可以在手机上编辑,又可以在电脑上码字,非常便利。
8、潮汐
很灵性的一款软件的软件,当你想要做事情想轻松愉快的进行却又不想听歌的时候,就可以选择他来陪伴你。它的内置功能就是通过那些自然界清脆、轻盈的声音像:白噪音、海浪、鸟叫、下雨声等既不让你感觉冷清,又能让你集中精神。另外还可以帮助我们进入睡眠,夜晚睡觉的时候借助那些自然界轻缓的声音帮助你快速入睡,第二天也可以将你轻柔的唤醒。另外,App会每天自动生成一张高清壁纸和一句名言,每当打开App看到这些句子和壁纸,都很惊喜。希望新的一年,它也能帮助你更专注地工作。
9、蜗牛睡眠
一些人总是因为各种各样的原因导致熬夜晚睡,时间一长就导致了睡眠质量大跌,而这个软件就是一个很不错的帮助我们睡眠的APP。他的厉害之处就在于记录你的深睡时间、浅睡时间、做梦时间、环境噪音,进而给出睡眠质量打分,让你可以依据这些数据,改善你的睡眠状况。
还有神奇的功能就是能够记录夜晚睡觉的鼾声和梦话,这样你的朋友在打鼾、说梦话的时候你就有证据了,到时候给他听听那情景肯定很美妙。
10、千与千寻
名字就很特别相信很多人都知道。这也是一款神奇的软件,因为这里可以看到别人的聊天记录,这可是一个很有意思的操作,还能选择不公开。这样一来对于那些情商有待提高的朋友,可以借鉴聊骚达人的先进经验,也可以看看感兴趣的妹子,不用聊天就能迅速了解一个人这你还不可吗?因为毕竟使用的人数少,不像国内的那些软件那样多,所以相对比较的冷门。即便啥也不干,当个树洞也不错啊!
好了今天给大家分享的就是这几类APP,觉得实用的话大家可以去试试哦!
无锡创元传媒:四夕
这9款冷门但逆天的APP真的绝了!强烈安利!!
1、桌面时钟(iOS/Android)一个主题非常丰富的手机桌面时钟,功能极简,打开就是一个时钟,但是里面的时钟主题非常丰富,比如我最爱的生辰钟、太空表盘时钟、 科技 馆十足的辉光管时钟,用起来不仅颜值高而且提升专注力!
超级有灵气的短句子APP,整体风格太简约治愈了!里面的句子不仅治愈心理的不开心也适合喜欢发朋友圈和早安晚安语录的朋友,模板超级好看!
这是一款可以制作壁纸和桌面美化的万能小组件APP,制作的壁纸简直太赞了有个性了!桌面小组件我最喜欢太空人和每日提醒TODO-list,放桌面真的超方便。
记录每日心情,这款微手帐APP是让我爱上电子手帐的原因,简直是太方便了!里面不仅有各式各样的免费素材贴纸,还有很多信纸、背景图,还可以插入照片,更好地记录生活。
对于看完电影习惯写一些影评发个朋友圈,但又不想拍电影票,想高逼格点。这款App,可以说是便利直通车。 App里不仅能找到很多精美的海报,还能直接看到豆瓣影评。 现在我想看电影都是直接在这上面搜索,看完电影的介绍点评再决定是否要去看这部电影。
这个APP集合了 免费、书多、读书体验好 这三个,每天会有一个小时的免费阅读时间,超过了才要收费,一小时的读书时间对我来说是完全够的,久而久之我也养成了每天读一小时书的习惯。而且里面的书非常多,想看的基本都能找得到,官方还会根据阅读习惯推荐用户一些优质的书单。
一个完全免费的日语五十音学习软件,它支持多种学习模式,平假名转换成片假名、片假名转换成平假名、听写模式、复习模式、测试模式、拗音查阅。
Mars围绕城市中的商圈,推荐那些非常值得去的餐厅、酒店、酒吧、家居店铺、书店、艺术展览,总之是当地人经常消遣时光的好地方。而且这些地方都是当地的编辑们亲自考察的,每一个都值得去。
我来说一说我的手机里有些什么特别厉害的软件。
1,捷径,如果说iOS 12有什么特别厉害的软件那么捷径绝对是其中最厉害的一个。捷径就像是最早的按键精灵一样,然后由于开放了软件的API接口,所以捷径的功能及其强大。你可以轻易的实现一些特别的功能,比如网盘万能钥匙,一键下载YouTube视频,无损音乐下载。而且你可以轻易的,或许别人制作的规则。无限扩展捷径的功能。
2,Gpsfake,这是一个可以修改你定位的工具。如果你受够了钉钉打卡的折磨,这个工具可以帮助你。
3,Procam6,这是一个非常专业的相机软件。让你的iOS设备跟单反一样可以调节iSO,快门,白平衡等设置,甚至他还可以超频你的摄像头。让你的视频分辨率远超过官方的分辨率。
4,谷歌地球,这是一个让你不出家门,就能够游览全世界的工具。
5,奥维互动地图。这是一个能够精确读取那个经纬度的地图,我一般在找无人机的时候就会利用到他。
6,Videoleap,这可能是IOS 上最好用的编辑软件了。
7,nPlayer ,这可能是iOS上格式支持最多的视频播放软件,而且支持局域网播放。
iSoul
iSoul 是一个iPhone 防盗助手App。
使用它可以防止你的iPhone 手机丢失,防盗。
它有很多模式,你可以随时设置。比如桌面模式,离开桌面就会发出警报。
还有飞行模式(飞行模式模式开启),口袋模式(拿出口袋),距离模式(超出距离)等等。
这些常用的模式,一旦触发,就会发出警报,不管是在做地铁公交,或者是公共场合,手机永远不会丢。
Workflow
用iPhone 的人,手机一个有一个App,那就是Workflow,如果没有,你的手机就白买了。
它和上面接收的IFTTT 类似,但是更接地气,更加使用与iOS 系统,比如你发送一个东西,从一个App 发送一个东西,扔给Workflow 就行了。想要将网页保存为图片或者PDF,它也能做。每天给你发送精美图片,帮你查天气预报天气,自己做一个翻译工具等等太多了。对它都可以的,更多大家可以去搜索,只要你脑洞足够大,Workflow 让你玩出很多花样。
而且最近它被苹果爸爸收购了,也看出它的优秀,以后再系统中集成,那功能就更强大了。我们拭目以待。
JSBox
JSBox 是一个具有JS 编程环境的iOS App。
使用它你可以随意编写自己的工具,只要你稍微懂点编程,JS 你就可以使用。
使用它可以查询天气,新拍的照片自动上传服务器等等,只要你脑洞够大,能写出更多不一样的东西。
而且它还有漂亮的编辑器,支持自动补全,主题切换,快速输入等功能。
同时还有iOS 原生接口供你使用。
搜狗听写
搜狗听写是一款实时语音转文字的App。
可以把它当做你的录音笔,使用它可以轻松写文章,笔记整理,采访录音等等。
而且它还能同时保留语音和文字,并且不限时长,录音的时候还可以添加重点标记。
同时它还多端同步,而且还可以在电脑浏览器中访问编辑。
还可以一键将内容分享给第三方平台。
悟空遥控器
悟空遥控器是一个智能电视 / 智能盒子 遥控器App。
只需要手机端和电视端安装之后,就可以使用手机遥控电视了,同时支持手势,方向键,鼠标,数字键,让你随心操作。
同时支持各大电视和盒子,全网电视随时播放,而且还可以投放网络云的资源哦,这个感觉很棒啊,私藏在网络云的小电影也可以一键播放。
同时内置高清直播,综艺,热门电视剧也不错过。
那今天就来做个iOS专场,专门来说说App Store上那些好用却不一定被大众熟知的小众APP。应用类型广泛、功能强大,建议先收藏~
一款设计简单、主打可爱风格的心情日记。可以用文字表情标记心情,也可以动手绘制属于自己的可爱微表情。支持图片上传,超多可爱的贴纸素材,让记录手帐成为更有趣又治愈的事。
一款由 Google 开发的照片编辑工具,提供29种工具和滤镜,可以局部修图,一件解决局部问题,也可以直接套用自带样式,滤镜非常多。总之,质感修图,用它!
一款集合了小组件、主题、壁纸的桌面美化工具,可制作抽屉式等个性化壁纸。小组件的主题也很丰富,有时钟、之前很火的太空表盘、倒计时、日历、to do list待办事项、语录、便签等等,小组件支持全透明效果。
一个功能非常强大的数学/高数学习软件,支持解决8类数学问题,100多个数学计算器,可以辅助解决大部分数学问题,提供详细的解题步骤,让数学学习从此无忧。
让手机充电拥有黑 科技 效果的苹果充电动画app,提供时下最热门酷炫的主题充电动画和提示音,让个性充电动画不再只是安卓的专利。玩机爱好者必备~
一款纯粹的网页浏览器,没有广告,没有推荐,界面十分简洁。内置AI引擎、网络、搜狗、谷歌搜索,包含作业学习、实习工作、翻译查询、高考查询、生活查询及各种AI黑 科技 ,功能相当强大。
清单式的笔记工具,无论是日常写作列提纲,还是整理学习工作笔记,用了它,逻辑条理、框架结构都不成问题。还可将文字内容提炼出核心观点,一键生成思维导图,懒癌患者必备!
一个分享打动人心事物的 App,每天都会推荐一首歌、一则语录、一篇文章,每天用十几分钟的细碎时光,点燃内心的光明。
以上就是推荐的全部内容,有需要的话可以安装体验一下~
想起自己用手机这么久,你说冷门比较逆天的APP或者说哪些脑洞极大的APP,还真是遇到过几个,闲着无聊就先写出来分享给各位好了:
1.B格满满的3D照片—Fyuse
Fyuse一直是在国外相对比较火的一款摄影软件,主打3D照片,可以让你用完全不同的角度去看你所拍的东西。别人只能展示简单的一面,但是你可以展示照片的360度
而且Fyuse有他自己的社交功能,日常就可以看到大佬们拍摄的奇思妙想,当然不建议大半夜的浏览,因为置顶的 美食 栏非常的丧心病狂。
像最近就开始了各种万圣节妆容什么的,可以说是资本主义真会玩系列。
新奇好玩的各种拍摄角度,完全可以满足360度想要呈现眼前场景的需求。
值得一提的是,这个APP拿来做一些产品展示的时候,可以展示到你想看到的每一个细节,之前做外贸行业的时候,给客户看用这个APP展示出来的产品,B格简直不要太高。
2.手残版P图软件—Photo Lab
这个APP可以说是B格拯救神器,完全可以拯救不会拍照星人和不会P图星人,一键Copy特效的功能简直让人感觉太他妈的逆天了
首页直接推荐比较好看的照片滤镜,然后会有原图展示,你只要把自己相册里和原图风格差不多的照片选中,然后选择使用这个风格。。
然后就自动帮你P成大片效果。你什么都不用管。。。
是的,就是这么智能,就是这么简单粗暴。。
3.强大的远程桌面工具—向日葵远程控制软件,控制手机和电脑这款APP是一个做设计的基友安利的,他是在家时远程修图。我觉得比较吸引我去用的是,它能适配各种系统来控制手机和电脑,用来把妹、哄老板、防小三那是扛扛的~
比如,学妹电脑有问题了,你一个手机过去就能远程帮她修理,对方惊喜之余就对你有好感了;随时远控公司的电脑,老大需要啥你都能立马处理,给他一个时时刻刻我都在待命着工作的勤奋印象,即使你可能已经在酒吧嗨的忘了家在哪里了;防小三,你懂的,直接控制他手机~呃~这种操作当我没说啊,最好的当然是用来控制父母手机,你远在外地工作也能远程教他们用智能手机。
桌面控制就是控制电脑或手机的桌面
摄像头,直接就是调用摄像头,可以当监控用。。。当你给小姐姐修电脑时,这个操作要小心。。。
远程文件,直接是手机与电脑之间上传或下载文件,相当于云盘了。
CMD,直接在上ping命令,运维工程师会用得到
同样的这个也非常适合各种 游戏 挂机党,担心自己的自动挂机是不是停了呀,或者是文明建造进度现在如何呀,牧场的庄稼是不是可以收了呀。
4. 可能是最逆天的 游戏 应用—S.M.T.H,中文名送我上西天。这个不是IOS系统中的 游戏 的主要原因是为了用户考虑。毕竟苹果这么贵,还是会挺心疼的。。
因为作为一款手机 游戏 应用,他可能会是最令人感到心跳加速的 游戏 应用。
但是内容十分简单,就是把手机扔上天
当然就会有朋友好奇的问,那要是没接住怎么办呢?
呵呵,你说呢?
这款 游戏 应用十分适合朋友聚会的时候大家一起掏出来比一比,毕竟这款 游戏 不单单逆天,他可以说是真正的你咋不上天级别的 游戏 了。
要说冷门并且逆天的 App,有一个特别符合要求:MathStudio:
这个 App 足够冷门:在 App Store 的中国区冷得都没有评论与打分。不过肯定算得上是逆天,下面说一下这个 App 为什么能称得上是逆天。
作为一个数学计算工具,那类似普通的 1+1 什么的四则运算表达式当然能做了,加减乘除、乘方、开方、指数、对数、(反)三角函数都可以计算:
当然,既然称之为逆天,那绝对不止只能算一些这样的表达式。还可以:
解方程:
求极限也是小意思了:
求导数,包括多元函数的偏导数:
除了能求导,还可以算不定积分与定积分:
画函数图像、方程图像更是小意思了。MathStudio可以画:
矩阵、行列式、线性方程组那些,比如计算矩阵的某个行列式、求逆矩阵、矩阵乘法、SVD 分解等等:
傅里叶展开:
概率论与数理统计那些,比如画正态分布曲线、求二项分布的 PDF (概率密度函数)和 CDF (概率累积函数):
自然语言处理:
这个 App 居然还带了一个编程环境:
解析 JSON:
元胞自动机:
要是有闲情逸致可以搞出个俄罗斯方块或者贪吃蛇:
除此之外的功能还有不少,在这里肯定不能一一介绍,可以移步在 MathStudio 官网的在线界面里查看:MathStudio。到这里,相信看官会认同这对得起“逆天”的称呼。这应该是 iOS 上最强大的数学工具了。
有人可能会想,这个和 WolframAlpha 相比怎么样?这个软件相对于 WolframAlpha 有个决定性的优点:
不用联网
嗯,不用像 WolframAlpha 那样要先把计算需求发送到服务器那边,等服务器算一阵子再拿到结果,而是输入完需要计算的项目后点 Solve,Plot 等立刻能得到结果。当然,可以离线用。
然后,这个 App 居然还提供了 Apple Watch 支持:
最后,你会想,这么一个功能逆天的 App 下载下来岂不要占一大块儿存储空间?要用一百多还是两百多 MB?
答案是:不到 4 MB。这基本就是一个中型、大型 App 的零头,甚至比某些 游戏 或 App 的单张贴图、切图还小。用 Wi-Fi 的话基本是秒下,就连用流量下载都不心疼。相比之下 WolframAlpha 要用二十多 MB。这样哪怕你用的是 16GB 版的 iPhone 都不会在意占用存储空间。
这个 App 有点儿年头了。至少我在 09、10 年上高中时,就在 iPod touch,iPhone OS 3.x 上用过了。那时还叫 SpaceTime,后来才改名为 MathStudio。在那时候功能就已经十分强大,和现在差不多了。
【删除】当然,这个 App 肯定有缺点。就是:
贵啊,两百多人民币。这大概就是其冷门的原因吧……【删除完】
-
好吧,我承认,高中用臭名昭着的 91 手机助手在 iPod touch 上装的这个。现在用的是在去年限免的时候下载的。这下你们相信我没在臭得瑟了吧……
确实价钱有些贵,不过如果有网络,可以用在线版的。
不多说,直接上APP!
Notability一款能实现无纸化笔记的APP,iPhone、iPad、macdo都能用。
可以导入课件/PPT,在上面做记录,可以自动备份和 iCloud 同步。
使用各种笔记、日记和绘图工具、例如墨水笔、荧光笔、文字和音频。
小睡眠一款能监测睡眠的APP,临睡前开启睡眠记录功能,会根据你晚上的睡眠情况,进行评估。
会给你提供睡眠改善建议,也能录下你晚上说过的梦话,或者鼾声。
可以设置第二天起床的闹铃,主打无痛唤醒,闹铃声舒缓,使用感特别好。
Anki一款功能强大的卡组背诵APP,会根据你的复习效果生成图表和统计数据。
界面简单,使用方便,但价格是真的高。目前也有不少平替的APP。
夜之森一款治愈系的养成 游戏 ,而且免费。喜欢猫咪,喜欢治愈 游戏 的宝,一定别错过!
游戏 里的猫咪会帮你寻找种子,猫咪每次外出都会给你带回不同的种子或者动物,你可以选择要培育的种子,还有培育植物的小动物,它们就会留下来啦~
MarginNote 3一款综合性的阅读笔记工具,集合了思维导图、卡组背诵,笔记记录等功能。
因为功能多,所以上手没这么简单,需要摸索。这款APP也是支持iPhone iPad Mac使用。
目前移动端和PC端的收费不统一,所以购买前需要了解清楚。
Hi,我是阿詹,这5款冷门实用的APP,后悔没早点知道,且听我慢慢道来!
一、掌阅精选
之前只知道掌阅,没想到还有这个APP,它专注于为用户提供精品书籍阅读服务,拥有搜索找书和专业分类找书功能,用户可以对感兴趣的书放入书架或者直接购买,最令人意外的就是如果对购买的书籍不满意,还可以在规定时间里进行退还,整体阅读界面也很舒服,推荐一下!
二、数蚁
一款效率工具,用这个APP可以随时随地的查看、管理使用以及分享工作资料,还可以安全的进行备份,即使外出了,也能轻松通过手机来进行沟通处理,重要的是它为你提供了2T的存储,以及15MB的高速访问,最后它对个人资料以及知识库都有水印保护,还是不错的。
三、幕布
简单的说,它是一款云端笔记,支持win、mac、安卓、ios,能做到信息全平台同步,但令人最为夸赞的是它能将笔记一键转换成思维导图,这其实有助于人们的办公和学习,同时APP遵循简约的风格,让人看起来很舒服!
四、echo回声
这个APP,我第一次听的时候就被震撼到了,原来音乐也可以有3D效果,那种带上耳机出现的环绕效果,对于听歌来说,体验真的很奇妙,而且这里面有很多的民间高手自己创作的音乐,很好听,还有弹幕式的评论,总体来说它属于一款小而精的APP。
五、乐网plus
这是一款广告拦截APP,专门针对视频广告、弹窗广告、恶意广告等进行拦截,这样就能舒服的看电视了,同时还能提升网页加载速度,减少流量的流失,算一款比较实用的APP吧,需要的朋友可以下载。
真的逆天的app,也就不太会冷门了。
所以我们还是说一下,你可能没见过的一些好的app,或者我们都觉得不错的app吧…
snapseed,vsco,修图必须
一言,文艺范十足
inside、rider、stack、dancing line,都是不错的 游戏 。
小小航海士,是个很怀旧的不错的单机大航海 游戏 。
篮球助手Pro,是我见过最好用的篮球计分系统,当然,如果有用着更好的介绍给我。
artomaton,一个将照片油画化的日本软件,效果很好,而且可以部分油画化。
slowfast,视频变快变慢
brushstorke 油画化图片,感觉上面的好些。
极简汇率,我喜欢简单专一的工具
变速map3,听mp3外语很有用,可以中段重播的复读机
onedrive,不说了吧,同步PC的网盘,我用了好多,金山之后,亿方云和网络感觉都太复杂了。
微车,我不能告诉你为啥微车好,我只能告诉你,如果你有一张电子拍照的扣分罚单,你用微车支付试试看,可能运气会好些。
clear,火极一时的代办任务。
锤子便签,虽然也有一些一般的地方,但是成长图效果还可以吧。
概念画板和sketchbook,手绘板最好的。
以上都是我手机必装的,太大众的就不写了,比如高德,你写他干嘛呢?
我真不知道app冷门后还能逆天,如果各位知道,告诉我。
我就是推荐下各位我觉得好用的app。
❷ e的x减一次方的导数
e的x减一次方的导数是e^(x-1)。
具体解法如下:
e的x减一次方,即为e^(x-1)
e的x减一次方的导数,即为e^(x-1)的导数
e^(x-1)'=e^(x-1)*(1)=e^(x-1)
所以e的x减一次方的导数是e^(x-1)。
(2)python偏导数扩展阅读
导数的求解注意点:
1、理解并牢记导数定义。导数定义中一定要出现这一点的函数值,如果已知告诉等于零,那极限表达式中就可以不出现,否就不能推出在这一点可导。
2、导数定义相关计算。这里有几种题型:1)已知某点处导数存在,计算极限,这需要掌握导数的广义化形式,还要注意是在这一点处导数存在的前提下,否则是不一定成立的。
3、导数、可微与连续的关系。函数在一点处可导与可微是等价的,可以推出在这一点处是连续的,反过来则是不成立的。
4、导数的计算。导数的计算可以说在每一年的考研数学中都会涉及到,而且形式不一,考查的方法也不同。
5、高阶导数计算。需要同学们记住几个常见的高阶导数公式,将其他函数都转化成我们这几种常见的函数,代入公式就可以了,也有通过求一阶导数,二阶,三阶的方法来找出他们之间关系的。
❸ Python怎么做最优化
最优化
为什么要做最优化呢?因为在生活中,人们总是希望幸福值或其它达到一个极值,比如做生意时希望成本最小,收入最大,所以在很多商业情境中,都会遇到求极值的情况。
函数求根
这里“函数的根”也称“方程的根”,或“函数的零点”。
先把我们需要的包加载进来。import numpy as npimport scipy as spimport scipy.optimize as optimport matplotlib.pyplot as plt%matplotlib inline
函数求根和最优化的关系?什么时候函数是最小值或最大值?
两个问题一起回答:最优化就是求函数的最小值或最大值,同时也是极值,在求一个函数最小值或最大值时,它所在的位置肯定是导数为 0 的位置,所以要求一个函数的极值,必然要先求导,使其为 0,所以函数求根就是为了得到最大值最小值。
scipy.optimize 有什么方法可以求根?
可以用 scipy.optimize 中的 bisect 或 brentq 求根。f = lambda x: np.cos(x) - x # 定义一个匿名函数x = np.linspace(-5, 5, 1000) # 先生成 1000 个 xy = f(x) # 对应生成 1000 个 f(x)plt.plot(x, y); # 看一下这个函数长什么样子plt.axhline(0, color='k'); # 画一根横线,位置在 y=0
opt.bisect(f, -5, 5) # 求取函数的根0.7390851332155535plt.plot(x, y)plt.axhline(0, color='k')plt.scatter([_], [0], c='r', s=100); # 这里的 [_] 表示上一个 Cell 中的结果,这里是 x 轴上的位置,0 是 y 上的位置
求根有两种方法,除了上面介绍的 bisect,还有 brentq,后者比前者快很多。%timeit opt.bisect(f, -5, 5)%timeit opt.brentq(f, -5, 5)10000 loops, best of 3: 157 s per loopThe slowest run took 11.65 times longer than the fastest. This could mean that an intermediate result is being cached.10000 loops, best of 3: 35.9 s per loop
函数求最小化
求最小值就是一个最优化问题。求最大值时只需对函数做一个转换,比如加一个负号,或者取倒数,就可转成求最小值问题。所以两者是同一问题。
初始值对最优化的影响是什么?
举例来说,先定义个函数。f = lambda x: 1-np.sin(x)/xx = np.linspace(-20., 20., 1000)y = f(x)
当初始值为 3 值,使用 minimize 函数找到最小值。minimize 函数是在新版的 scipy 里,取代了以前的很多最优化函数,是个通用的接口,背后是很多方法在支撑。x0 = 3xmin = opt.minimize(f, x0).x # x0 是起始点,起始点最好离真正的最小值点不要太远plt.plot(x, y)plt.scatter(x0, f(x0), marker='o', s=300); # 起始点画出来,用圆圈表示plt.scatter(xmin, f(xmin), marker='v', s=300); # 最小值点画出来,用三角表示plt.xlim(-20, 20);
初始值为 3 时,成功找到最小值。
现在来看看初始值为 10 时,找到的最小值点。x0 = 10xmin = opt.minimize(f, x0).xplt.plot(x, y)plt.scatter(x0, f(x0), marker='o', s=300)plt.scatter(xmin, f(xmin), marker='v', s=300)plt.xlim(-20, 20);
由上图可见,当初始值为 10 时,函数找到的是局部最小值点,可见 minimize 的默认算法对起始点的依赖性。
那么怎么才能不管初始值在哪个位置,都能找到全局最小值点呢?
如何找到全局最优点?
可以使用 basinhopping 函数找到全局最优点,相关背后算法,可以看帮助文件,有提供论文的索引和出处。
我们设初始值为 10 看是否能找到全局最小值点。x0 = 10from scipy.optimize import basinhoppingxmin = basinhopping(f,x0,stepsize = 5).xplt.plot(x, y);plt.scatter(x0, f(x0), marker='o', s=300);plt.scatter(xmin, f(xmin), marker='v', s=300);plt.xlim(-20, 20);
当起始点在比较远的位置,依然成功找到了全局最小值点。
如何求多元函数最小值?
以二元函数为例,使用 minimize 求对应的最小值。def g(X): x,y = X return (x-1)**4 + 5 * (y-1)**2 - 2*x*yX_opt = opt.minimize(g, (8, 3)).x # (8,3) 是起始点print X_opt[ 1.88292611 1.37658521]fig, ax = plt.subplots(figsize=(6, 4)) # 定义画布和图形x_ = y_ = np.linspace(-1, 4, 100)X, Y = np.meshgrid(x_, y_)c = ax.contour(X, Y, g((X, Y)), 50) # 等高线图ax.plot(X_opt[0], X_opt[1], 'r*', markersize=15) # 最小点的位置是个元组ax.set_xlabel(r"$x_1$", fontsize=18)ax.set_ylabel(r"$x_2$", fontsize=18)plt.colorbar(c, ax=ax) # colorbar 表示颜色越深,高度越高fig.tight_layout()
画3D 图。from mpl_toolkits.mplot3d import Axes3Dfrom matplotlib import cmfig = plt.figure()ax = fig.gca(projection='3d')x_ = y_ = np.linspace(-1, 4, 100)X, Y = np.meshgrid(x_, y_)surf = ax.plot_surface(X, Y, g((X,Y)), rstride=1, cstride=1, cmap=cm.coolwarm, linewidth=0, antialiased=False)cset = ax.contour(X, Y, g((X,Y)), zdir='z',offset=-5, cmap=cm.coolwarm)fig.colorbar(surf, shrink=0.5, aspect=5);
曲线拟合
曲线拟合和最优化有什么关系?
曲线拟合的问题是,给定一组数据,它可能是沿着一条线散布的,这时要找到一条最优的曲线来拟合这些数据,也就是要找到最好的线来代表这些点,这里的最优是指这些点和线之间的距离是最小的,这就是为什么要用最优化问题来解决曲线拟合问题。
举例说明,给一些点,找到一条线,来拟合这些点。
先给定一些点:N = 50 # 点的个数m_true = 2 # 斜率b_true = -1 # 截距dy = 2.0 # 误差np.random.seed(0)xdata = 10 * np.random.random(N) # 50 个 x,服从均匀分布ydata = np.random.normal(b_true + m_true * xdata, dy) # dy 是标准差plt.errorbar(xdata, ydata, dy, fmt='.k', ecolor='lightgray');
上面的点整体上呈现一个线性关系,要找到一条斜线来代表这些点,这就是经典的一元线性回归。目标就是找到最好的线,使点和线的距离最短。要优化的函数是点和线之间的距离,使其最小。点是确定的,而线是可变的,线是由参数值,斜率和截距决定的,这里就是要通过优化距离找到最优的斜率和截距。
点和线的距离定义如下:def chi2(theta, x, y): return np.sum(((y - theta[0] - theta[1] * x)) ** 2)
上式就是误差平方和。
误差平方和是什么?有什么作用?
误差平方和公式为:
误差平方和大,表示真实的点和预测的线之间距离太远,说明拟合得不好,最好的线,应该是使误差平方和最小,即最优的拟合线,这里是条直线。
误差平方和就是要最小化的目标函数。
找到最优的函数,即斜率和截距。theta_guess = [0, 1] # 初始值theta_best = opt.minimize(chi2, theta_guess, args=(xdata, ydata)).xprint(theta_best)[-1.01442005 1.93854656]
上面两个输出即是预测的直线斜率和截距,我们是根据点来反推直线的斜率和截距,那么真实的斜率和截距是多少呢?-1 和 2,很接近了,差的一点是因为有噪音的引入。xfit = np.linspace(0, 10)yfit = theta_best[0] + theta_best[1] * xfitplt.errorbar(xdata, ydata, dy, fmt='.k', ecolor='lightgray');plt.plot(xfit, yfit, '-k');
最小二乘(Least Square)是什么?
上面用的是 minimize 方法,这个问题的目标函数是误差平方和,这就又有一个特定的解法,即最小二乘。
最小二乘的思想就是要使得观测点和估计点的距离的平方和达到最小,这里的“二乘”指的是用平方来度量观测点与估计点的远近(在古汉语中“平方”称为“二乘”),“最小”指的是参数的估计值要保证各个观测点与估计点的距离的平方和达到最小。
关于最小二乘估计的计算,涉及更多的数学知识,这里不想详述,其一般的过程是用目标函数对各参数求偏导数,并令其等于 0,得到一个线性方程组。具体推导过程可参考斯坦福机器学习讲义 第 7 页。def deviations(theta, x, y): return (y - theta[0] - theta[1] * x)theta_best, ier = opt.leastsq(deviations, theta_guess, args=(xdata, ydata))print(theta_best)[-1.01442016 1.93854659]
最小二乘 leastsq 的结果跟 minimize 结果一样。注意 leastsq 的第一个参数不再是误差平方和 chi2,而是误差本身 deviations,即没有平方,也没有和。yfit = theta_best[0] + theta_best[1] * xfitplt.errorbar(xdata, ydata, dy, fmt='.k', ecolor='lightgray');plt.plot(xfit, yfit, '-k');
非线性最小二乘
上面是给一些点,拟合一条直线,拟合一条曲线也是一样的。def f(x, beta0, beta1, beta2): # 首先定义一个非线性函数,有 3 个参数 return beta0 + beta1 * np.exp(-beta2 * x**2)beta = (0.25, 0.75, 0.5) # 先猜 3 个 betaxdata = np.linspace(0, 5, 50)y = f(xdata, *beta)ydata = y + 0.05 * np.random.randn(len(xdata)) # 给 y 加噪音def g(beta): return ydata - f(xdata, *beta) # 真实 y 和 预测值的差,求最优曲线时要用到beta_start = (1, 1, 1)beta_opt, beta_cov = opt.leastsq(g, beta_start)print beta_opt # 求到的 3 个最优的 beta 值[ 0.25525709 0.74270226 0.54966466]
拿估计的 beta_opt 值跟真实的 beta = (0.25, 0.75, 0.5) 值比较,差不多。fig, ax = plt.subplots()ax.scatter(xdata, ydata) # 画点ax.plot(xdata, y, 'r', lw=2) # 真实值的线ax.plot(xdata, f(xdata, *beta_opt), 'b', lw=2) # 拟合的线ax.set_xlim(0, 5)ax.set_xlabel(r"$x$", fontsize=18)ax.set_ylabel(r"$f(x, \beta)$", fontsize=18)fig.tight_layout()
除了使用最小二乘,还可以使用曲线拟合的方法,得到的结果是一样的。beta_opt, beta_cov = opt.curve_fit(f, xdata, ydata)print beta_opt[ 0.25525709 0.74270226 0.54966466]
有约束的最小化
有约束的最小化是指,要求函数最小化之外,还要满足约束条件,举例说明。
边界约束def f(X): x, y = X return (x-1)**2 + (y-1)**2 # 这是一个碗状的函数x_opt = opt.minimize(f, (0, 0), method='BFGS').x # 无约束最优化
假设有约束条件,x 和 y 要在一定的范围内,如 x 在 2 到 3 之间,y 在 0 和 2 之间。bnd_x1, bnd_x2 = (2, 3), (0, 2) # 对自变量的约束x_cons_opt = opt.minimize(f, np.array([0, 0]), method='L-BFGS-B', bounds=[bnd_x1, bnd_x2]).x # bounds 矩形约束fig, ax = plt.subplots(figsize=(6, 4))x_ = y_ = np.linspace(-1, 3, 100)X, Y = np.meshgrid(x_, y_)c = ax.contour(X, Y, f((X,Y)), 50)ax.plot(x_opt[0], x_opt[1], 'b*', markersize=15) # 没有约束下的最小值,蓝色五角星ax.plot(x_cons_opt[0], x_cons_opt[1], 'r*', markersize=15) # 有约束下的最小值,红色星星bound_rect = plt.Rectangle((bnd_x1[0], bnd_x2[0]), bnd_x1[1] - bnd_x1[0], bnd_x2[1] - bnd_x2[0], facecolor="grey")ax.add_patch(bound_rect)ax.set_xlabel(r"$x_1$", fontsize=18)ax.set_ylabel(r"$x_2$", fontsize=18)plt.colorbar(c, ax=ax)fig.tight_layout()
不等式约束
介绍下相关理论,先来看下存在等式约束的极值问题求法,比如下面的优化问题。
目标函数是 f(w),下面是等式约束,通常解法是引入拉格朗日算子,这里使用 ββ 来表示算子,得到拉格朗日公式为
l 是等式约束的个数。
然后分别对 w 和ββ 求偏导,使得偏导数等于 0,然后解出 w 和βiβi,至于为什么引入拉格朗日算子可以求出极值,原因是 f(w) 的 dw 变化方向受其他不等式的约束,dw的变化方向与f(w)的梯度垂直时才能获得极值,而且在极值处,f(w) 的梯度与其他等式梯度的线性组合平行,因此他们之间存在线性关系。(参考《最优化与KKT条件》)
对于不等式约束的极值问题
常常利用拉格朗日对偶性将原始问题转换为对偶问题,通过解对偶问题而得到原始问题的解。该方法应用在许多统计学习方法中。有兴趣的可以参阅相关资料,这里不再赘述。def f(X): return (X[0] - 1)**2 + (X[1] - 1)**2def g(X): return X[1] - 1.75 - (X[0] - 0.75)**4x_opt = opt.minimize(f, (0, 0), method='BFGS').xconstraints = [dict(type='ineq', fun=g)] # 约束采用字典定义,约束方式为不等式约束,边界用 g 表示x_cons_opt = opt.minimize(f, (0, 0), method='SLSQP', constraints=constraints).xfig, ax = plt.subplots(figsize=(6, 4))x_ = y_ = np.linspace(-1, 3, 100)X, Y = np.meshgrid(x_, y_)c = ax.contour(X, Y, f((X, Y)), 50)ax.plot(x_opt[0], x_opt[1], 'b*', markersize=15) # 蓝色星星,没有约束下的最小值ax.plot(x_, 1.75 + (x_-0.75)**4, '', markersize=15)ax.fill_between(x_, 1.75 + (x_-0.75)**4, 3, color="grey")ax.plot(x_cons_opt[0], x_cons_opt[1], 'r*', markersize=15) # 在区域约束下的最小值ax.set_ylim(-1, 3)ax.set_xlabel(r"$x_0$", fontsize=18)ax.set_ylabel(r"$x_1$", fontsize=18)plt.colorbar(c, ax=ax)fig.tight_layout()
scipy.optimize.minimize 中包括了多种最优化算法,每种算法使用范围不同,详细参考官方文档。
❹ 从零开始用Python构建神经网络
从零开始用Python构建神经网络
动机:为了更加深入的理解深度学习,我们将使用 python 语言从头搭建一个神经网络,而不是使用像 Tensorflow 那样的封装好的框架。我认为理解神经网络的内部工作原理,对数据科学家来说至关重要。
这篇文章的内容是我的所学,希望也能对你有所帮助。
神经网络是什么?
介绍神经网络的文章大多数都会将它和大脑进行类比。如果你没有深入研究过大脑与神经网络的类比,那么将神经网络解释为一种将给定输入映射为期望输出的数学关系会更容易理解。
神经网络包括以下组成部分
? 一个输入层,x
? 任意数量的隐藏层
? 一个输出层,?
? 每层之间有一组权值和偏置,W and b
? 为隐藏层选择一种激活函数,σ。在教程中我们使用 Sigmoid 激活函数
下图展示了 2 层神经网络的结构(注意:我们在计算网络层数时通常排除输入层)
2 层神经网络的结构
用 Python 可以很容易的构建神经网络类
训练神经网络
这个网络的输出 ? 为:
你可能会注意到,在上面的等式中,输出 ? 是 W 和 b 函数。
因此 W 和 b 的值影响预测的准确率. 所以根据输入数据对 W 和 b 调优的过程就被成为训练神经网络。
每步训练迭代包含以下两个部分:
? 计算预测结果 ?,这一步称为前向传播
? 更新 W 和 b,,这一步成为反向传播
下面的顺序图展示了这个过程:
前向传播
正如我们在上图中看到的,前向传播只是简单的计算。对于一个基本的 2 层网络来说,它的输出是这样的:
我们在 NeuralNetwork 类中增加一个计算前向传播的函数。为了简单起见我们假设偏置 b 为0:
但是我们还需要一个方法来评估预测结果的好坏(即预测值和真实值的误差)。这就要用到损失函数。
损失函数
常用的损失函数有很多种,根据模型的需求来选择。在本教程中,我们使用误差平方和作为损失函数。
误差平方和是求每个预测值和真实值之间的误差再求和,这个误差是他们的差值求平方以便我们观察误差的绝对值。
训练的目标是找到一组 W 和 b,使得损失函数最好小,也即预测值和真实值之间的距离最小。
反向传播
我们已经度量出了预测的误差(损失),现在需要找到一种方法来传播误差,并以此更新权值和偏置。
为了知道如何适当的调整权值和偏置,我们需要知道损失函数对权值 W 和偏置 b 的导数。
回想微积分中的概念,函数的导数就是函数的斜率。
梯度下降法
如果我们已经求出了导数,我们就可以通过增加或减少导数值来更新权值 W 和偏置 b(参考上图)。这种方式被称为梯度下降法。
但是我们不能直接计算损失函数对权值和偏置的导数,因为在损失函数的等式中并没有显式的包含他们。因此,我们需要运用链式求导发在来帮助计算导数。
链式法则用于计算损失函数对 W 和 b 的导数。注意,为了简单起见。我们只展示了假设网络只有 1 层的偏导数。
这虽然很简陋,但是我们依然能得到想要的结果—损失函数对权值 W 的导数(斜率),因此我们可以相应的调整权值。
现在我们将反向传播算法的函数添加到 Python 代码中
为了更深入的理解微积分原理和反向传播中的链式求导法则,我强烈推荐 3Blue1Brown 的如下教程:
Youtube:https://youtu.be/tIeHLnjs5U8
整合并完成一个实例
既然我们已经有了包括前向传播和反向传播的完整 Python 代码,那么就将其应用到一个例子上看看它是如何工作的吧。
神经网络可以通过学习得到函数的权重。而我们仅靠观察是不太可能得到函数的权重的。
让我们训练神经网络进行 1500 次迭代,看看会发生什么。 注意观察下面每次迭代的损失函数,我们可以清楚地看到损失函数单调递减到最小值。这与我们之前介绍的梯度下降法一致。
让我们看看经过 1500 次迭代后的神经网络的最终预测结果:
经过 1500 次迭代训练后的预测结果
我们成功了!我们应用前向和方向传播算法成功的训练了神经网络并且预测结果收敛于真实值。
注意预测值和真实值之间存在细微的误差是允许的。这样可以防止模型过拟合并且使得神经网络对于未知数据有着更强的泛化能力。
下一步是什么?
幸运的是我们的学习之旅还没有结束,仍然有很多关于神经网络和深度学习的内容需要学习。例如:
? 除了 Sigmoid 以外,还可以用哪些激活函数
? 在训练网络的时候应用学习率
? 在面对图像分类任务的时候使用卷积神经网络
我很快会写更多关于这个主题的内容,敬请期待!
最后的想法
我自己也从零开始写了很多神经网络的代码
虽然可以使用诸如 Tensorflow 和 Keras 这样的深度学习框架方便的搭建深层网络而不需要完全理解其内部工作原理。但是我觉得对于有追求的数据科学家来说,理解内部原理是非常有益的。
这种练习对我自己来说已成成为重要的时间投入,希望也能对你有所帮助