术致科技

您现在的位置是:首页 > 字体 > 字体百科 > 正文

字体百科

bokeh_为什么Python是入行人工智能的首选语言

爱字体2023-08-14字体百科0
本文目录bokeh,为什么Python是入行人工智能的首选语言?vray50物理相机参数?python可以实现哪些办公自动化?手机处理器联发科p65相当于骁龙什么型号?哪位大神知道什么原因?bokeh
本文目录

bokeh,为什么Python是入行人工智能的首选语言?

谢邀.

bokeh_为什么Python是入行人工智能的首选语言

因为Python还是有不少优势的:

开源,跨平台。社区。不要小看这一点。社区意味着有很多教程、书籍,出了问题很容易google到,乃至更好的IDE支持。运行速度虽然没有Java,C++快,但是开发方便快捷,可以快速验证自己想法.

当然,你会说上面这些优势Java和C++也有。实际上,Java的社区可能比Python大,至少Java的IDE比Python强(你可以自行对比下IntelliJ和PyCharm)。

那么我们来说些Python独特的优势:

语法设计的优雅。你可以说这些只是一些皮毛,无关痛痒。但这些皮毛其实是语言的“用户界面”。Java的语法是否优雅有争议,而C++的语法……内存安全性。人工智能开发不应该操心指针错误这样的问题。当然Java不存在这个问题。平滑的学习曲线。开发人工智能的人不一定都是程序员,很多学术界和从事数据分析的人并不熟悉C++。当然他们也可能不熟悉Python。但入门Python和入门C++的难度不可同日而语。表达效率。Java和C++还是比较啰嗦的。虽然说靠谱的IDE可以自动生成代码,但这只是节省了打字的开销,而代码大部分时间是用来读的,而不是用来写的。历史积累。人工智能涉及很多科学计算、数据可视化的任务。这方面,Python有非常优质的库,比如,numpy和pandas在别的语言里没有级别相当的替代品。

另外,速度其实并不是一个大问题。因为实际上你不一定真的在写Python.

比如,我们看以下TensorFlow代码的示例:

上面这段代码,明显是Python(这还用说?)。

但是,仔细看看,真的是Python吗?实际上,这些代码构建了一个图m,然后通过tf.Session()的run方法运行了图m。下面一段代码可能更明显,我们想迭代数据集dataset,在TensorFlow下需要这样写:

我们看到,我们不能直接使用Python迭代数据集,而要通过TensorFlow提供的方法构建迭代器。

这一情况可以类比使用Python访问SQL数据库:

这里,我们构造了SQL请求语句,然后通过Python“执行”(execute)这些语句。表面上你在写Python,其实关键的逻辑在SQL语句里。更准确地说,你是在用Python构造SQL语句,然后运行构造的语句。这称为元编程(meta programming)。

同理,在TensorFlow下,表面上你在写Python,其实关键的逻辑都在TensorFlow图里。更准确地说,你是在用Python构造TensorFlow图,然后运行构造的图。

实际上,2017年万圣节(10月31日),Google发布了TensorFlow Eager Execution(贪婪执行),让你可以直接使用Python编程,而不是使用Python元编程TensorFlow图。

使用Eager Execution,上面两段TensorFlow代码可以改写为:

你看,TensorFlow明明可以“好好地”用Python编程的嘛。之前为什么要这么大费周折地绕一个圈子?

因为性能。

机器学习,尤其是现代的复杂模型,有着极高的算力需求。TensorFlow图可以很好地应对贪婪的算力需求,而Python则对此力不从心。

TensorFlow图专门针对机器学习的需求设计,所以可以很好地优化,以提升性能。

所以说,你其实大部分时间是在用Python进行元编程,并不需要操心Python的性能问题。

当然,天下没有免费的午餐。为了更好地优化,TensorFlow图对模型有着许多假设(这些假设从另一方面来说也是限制),也要求构造、运行分阶段进行(静态图模型)。这影响了模型的灵活性和表达力。

而像PyTorch这样支持动态图模型,更Pythonic的框架,为了优化性能可以说是煞费苦心,但仍有不足。

所以,Google Brain挖了Swift之父Chris Lattner做Swift For TensorFlow(上个月底刚刚开源),就是为了兼顾性能和灵活性。

Swift For TensorFlow对动态图模型代码进行分析,自动生成对应的TensorFlow图程序。

图程序提取(黄色方框)是Swift For TensorFlow的关键技术

上图中的model.swift没法换成model.py,因为Python那一大堆动态特性,使得Python无法被可靠地静态分析。

model.java也不行,因为Java虽然是静态语言,但动态分发(dynamic dispatch)非常普遍。换句话说,Java主要的高层抽象手段,类和接口,都高度依赖动态分发。

model.cpp也许可以。但是,基于前面说过的C++的问题,C++没有机会。

总之,Python有一些主客观优势,再加上一些历史因素,成为当前人工智能的主流语言。但优势还没有大到和人工智能是“天作之合”的程度。而以后随着人工智能技术的发展,Python也未必能保持这个AI/ML主流语言的地位。

没有说人工智能要钦定Python,没有任何这个意思。但你一定要问Python到底有什么优势,它现在是人工智能的主流语言,怎么能没有优势?

vray50物理相机参数?

type – 相机的类别,这个参数在动态模糊上会产生不同的效果。

Still cam – 模拟普通相机在常规快门速度下的效果。

Cinematic camera – 模拟带有圆形快门的影视摄影机效果。

Video camera – 模拟带有CCD矩阵的摄影机效果。

targeted – 决定在场景里是否看到相机的目标点

film gate (mm) – 以毫米为单位,定义片门的水平数值。垂直数值则由渲染图的比例进行相应的缩放(垂直胶片尺寸 = 水平胶片尺寸 / 宽高比).

focal length (mm) 焦距– 决定了相机的焦距。

fov – 当勾选时,这个参数的数值会取代之前的film gate和focal length两项参数。

zoom factor (变焦)– 模拟相机的变焦效果。数值高于1,相当于放大效果,小于1,相当于缩小效果。

horizontal shift – 调整相机的水平视界,比如0.5的数值,会让相机向左侧移动当前画面水平宽度的一半。

vertical shift – 调整相机的垂直视界,比如0.5的数值,会让相机向上方移动当前画面垂直高度的一半。

f-number(光圈值) – 决定了相机的光圈。如果Exposure(曝光)选项被勾选的话,更改这个参数还会对画面的亮度产生影响。

target distance – 定义了相机与目标点之间的距离。

vertical tilt和horizontal tilt – 模拟偏斜镜头的效果。点击Guess vert tilt和Guess horiz tilt按钮对画面进行两点透视的修正(保持透视的垂直和水平)。

auto guess vert. – 当勾选时,相机在动画时也会自动修正偏斜。

specify focus – 定义一个与当前相机目标距离不一样的对焦距离。

focus distance – 焦距,如果上面的specify focus被勾选,那么该数值就是焦点物体离相机的距离。

exposure – 当曝光参数被勾选时,f-number, 快门速度和shutter speed, 和胶卷速度(ISO)就会对画面的明度产生影响。

vignetting – 当虚光选项被勾选时,就会模拟现实摄影里的虚光效果,并且其强度可以进行调整,0代表没有虚光效果,而1则代表常规虚光效果。

white balance – 白平衡影响画面的色调,注意该选项不对明度产生影响,仅仅对色相产生影响。白平衡有几种类别,大多数时候Daylight适合室外场景。

shutter speed (s^-1) – 决定了相机快门的速度,一般来说,室内场景的快门设置为1/30秒,这里的数值就设置为30。

shutter angle (deg) – 影视相机里的快门角度。

shutter offset (deg) – 影视相机里的快门偏移。

latency (s) – 定义了摄影机里的CCD矩阵延迟。

film speed (ISO) – 定义了胶片的感光度,数值越小,画面越暗,反之则越亮。

图例

Zoom Factor(变焦)

这个参数决定了对画面的缩放,但并不改变相机的位置。

f-stop(光圈值)

这个参数决定了光圈的大小,数值越小(光圈越大),画面则越亮,因为更多的光透到相机里来了。

反之,数值越大,画面越暗,因为光圈越来越小,能透到相机里的光就越少。

这个参数还影响了Depth of Field (景深) 效果。

Vertical Tilt(垂直修正)

这个参数可以对画面的两点透视进行修正,假如要自动修正,点击Guess vert tilt按钮即可。

Exposure(曝光), Field of View(景别)和Focus Distance(焦距)

焦距的改变会对画面的亮度和视界产生影响,这在现实里的相机也是如此。

比如下图里,一张白纸上画了一个黑色方框,仔细观察当相机距离产生变化时,画面的亮度也随之发生了变化。

Vignetting(虚光)

White Balance(白平衡)

白平衡会对画面整体产生色调上的影响,比如在白天日光的时候,为了弥补天光,白平衡可以设置为浅粉色。

Shutter Speed(快门速度)

这个数值决定了曝光的时间,数值越小(曝光时间越长),画面越亮(更多的光透进相机)。

反之,曝光时间越短,画面越暗。这个数值还会对动态模糊产生影响。

Film Speed (ISO)(胶片感光)

这个数值定义了胶片的感度,数值越高,代表胶片感光越敏感,画面越亮。反之则画面越暗。

Bokeh Effects(博克效应)

当depth-of-field选项被勾选时,这些参数决定了博克效应的效果。

blades – 决定了相机光圈的形状,当不选,光圈的形状就是默认的圆形。被勾选后,后面的数值就是光圈多边形的边数。

rotation (deg) – 决定了上面blades的角度。

center bias – 对博克效应添加一个修正,正数会让边缘的博克效应更加明亮,而负数则让中间的博克效应更加明亮。

anisotropy (异向性)– 对博克效应在水平或垂直方向上产生一个拉伸,来模拟现实摄影里的变形镜头效果。

optical vignetting(光学虚光) – 控制光学虚光的强度,在摄影里这叫猫眼虚光。该数值越大,那么光圈的造型越来越窄如同猫眼。在广角镜头中,这种效果越加明显。这种效果的渲染非常耗时,并且会产生很多难以清除的噪点。

bitmap aperture(位图孔径) – 勾选时,可以通过下面的贴图通道来指定一张图片(污渍或污垢)作为光圈的形状,白色部分全透明而黑色部分为半透明。

affect exposure – 当勾选时,博克效应会影响到画面的整体曝光效果。

bitmap resolution – 决定了下方那张贴图在渲染博克效应时所采用的像素大小。

采样

depth-of-field (景深)– 画面产生景深效果。

相机离物体越近,效果越明显。为了达到明显的景深效果,相机的f-number(光圈值)要尽可能的小。

这可能会让画面很亮甚至曝光,为了防止这一现象,相机的快门速度要尽肯能的快。还有就是对焦要尽可能的准确。

motion blur – 画面产生动态模糊效果。

该效果的强弱由物体的移动速度和快门速度来决定。快门越慢,效果越明显,

因为物体的移动轨迹被更多的捕捉到了。反之效果则越不明显。

为了能保证画面整体的亮度不受影响,f-number(光圈值)需要根据需要进行调整。

需要注意的是,距离越远的物体,其移动速度在视觉上就越快,产生的模糊效果也会不同。

扭曲

distortion type – 扭曲的类型,全部类型如下:

Quadratic(二次)– 这是默认的类型,它的计算方式比Cubic(函数)方式更加简便快速。

Cubic(函数) – 如果你打算使用诸如SynthEyes, Boujou等相继轨迹跟踪程序的话,那么你需要使用该扭曲类型。

Lens file – 使用一张.lens格式的文件,并配合使用V-Ray的镜头分析工具。

Texture – 可以指定一张贴图

distortion amount – 在选择以Quadratic和Cubic类型时,可以设置扭曲的强度,0表示没有扭曲,正数将产生“外凸形”扭曲,如同一个酒桶,而负数将产生“内凹形”扭曲,如同一个枕头。

其他

horizon line(水平线) – 当被勾选时,视窗里会显示出相机的水平线。

clipping(剪切) – 当被勾选时,相机的镜头剪切功能将启用。

near/far clipping plane – 当上面的clipping被勾选时,这里可以定义剪切的最近和最远的距离。

near/far environment range – 定义了最近和最远的环境距离(在一些环境特效中使用)

show cone – 在视窗里显示相机的景别与焦平面。其中:

Selected – 只显示选中相机的景别与焦平面。

Always – 总是显示相机的景别与焦平面。

Never – 总不显示景别与焦平面。

python可以实现哪些办公自动化?

Python办公自动化主要是批量化、自动化、定制化解决数据问题,目前主要分为三大块:自动化office、自动化机器人、自动化数据服务。

1、自动化office,包括对excel、word、ppt、email、pdf等常用办公场景的操作,

python都有对应的工具库,可以很方便的调用。

提供一些常见的核心库供大家参考使用。

excel:xlwings、xlrd、xlwt、openpyxl

word:Python-docx

ppt:pptx

email:smtplib(SMTP服务)、email(解析处理)、yagmail(全能)

pdf:pypdf2、pdfminer、pdfplumber

picture:PIL

学这些会撸python是前提,对于小白来说自学也不是件容易的事,需要花相当的时间去适应python的语法逻辑,而且要坚持亲手敲代码,不断练习。

2、自动化机器人,用来提高常规且高频的服务,比如微信客服、自动交易系统、实时信息抓取、QQ聊天机器人等。

例如

web自动化测试:selenium

模拟鼠标键盘:pymouse、pywinauto、pyautogui

微信自动化:wechatby

Python自动化办公其实并不难,但也需要有Python基础,起码得会写脚本,不然尽管有自动化接口也用不了。

很多人入了很长时间门,还是在门外徘徊,我觉得这是学习方法的问题。学习编程一定要多练习,基础+实战同步走,这样才能最快掌握Python。

可能你会问,看书看不进去怎么办,那就换条路子,你可以去看视频、看网络教程、逛github,都是很不错的方法.

3、自动化数据服务,主要是提供流式数据服务,从数据获取、数据处理、数据建模、数据可视化,到最终生成数据报告,通过python搭建起完整数据链条。

数据抓取:requests、scrapy

数据处理:pandas、numpy

数据建模:scipy、scikit-learn、statesmodel、keras

数据可视化:matplotlib、seaborn、bokeh、pyecharts

数据报表:dash

以python操作excel为例,使用xlwings生成自动化图表。

1、简单介绍xlwings

接下来实操演练:

1、准备一个表格

2、对表格进行各种操作

导入xlwings库,命名为xw

import xlwings as xw

建立与活动工作簿的连接

# 这里使用books方法,引用工作簿

wb = xw.books["商品清单.xlsx"]

type(wb)

xlwings.main.Book

查看工作簿的名字

wb.name

'商品清单.xlsx'

实例化工作表对象

sht = wb.sheets['表一']

查看表一中A1单元格的内容

# 标准用法

sht.range('A1').value

'品类'

# 简洁用法

sht['A1'].value

'品类'

# 索引用法

sht[0,0].value

'品类'

查看表一中A1-D8所有单元格的内容

sht.range('A1:D8').value

输出:

[['品类', '数量(件)', '单价(元)', '总价(元)'],

['坚果', 5.0, 30.0, 150.0],

['罐头', 9.0, 10.0, 90.0],

['牛肉', 3.0, 60.0, 180.0],

['果汁', 10.0, 9.0, 90.0],

['蜂蜜', 2.0, 80.0, 160.0],

['进口零食', 4.0, 70.0, 280.0],

['合计', 33.0, 43.166666666666664, 950.0]]

sht[:8,:4].value

输出:

[['品类', '数量(件)', '单价(元)', '总价(元)'],

['坚果', 5.0, 30.0, 150.0],

['罐头', 9.0, 10.0, 90.0],

['牛肉', 3.0, 60.0, 180.0],

['果汁', 10.0, 9.0, 90.0],

['蜂蜜', 2.0, 80.0, 160.0],

['进口零食', 4.0, 70.0, 280.0],

['合计', 33.0, 43.166666666666664, 950.0]]

将表一B2单元格5改为7

sht.range('B2').value = 7

向表二中导入dataframe类型数据

第一步:连接表二

第二步:生成一个dataframe类型数据集

第三步:导入表二

sht_2 = wb.sheets['表二']

import pandas as pd

df = pd.DataFrame({'姓名':['小王','小张','小李'],'年龄':[23,26,19]})

df

导入:

sht_2.range('B1').value = df

向表二中导入numpy数组

import numpy as np

obj = np.array([[1,2,3],[4,5,6]])

obj

输出:

array([[1, 2, 3],

[4, 5, 6]])

导入:

sht_2.range('F1').value = obj

将excel中数据导出为DataFrame格式

sht_2.range('B1').options(pd.DataFrame, expand='table').value

用matplotlib绘图并将图片贴到excel上

import matplotlib.pyplot as plt

fig = plt.figure(figsize=(4,4))

plt.plot([1,2,3,4,5])

sht_2.pictures.add(fig, name='MyPlot', update=True)

输出:

<Picture 'MyPlot' in <Sheet [商品清单.xlsx]表二>>

修改表三中A1单元格的宽和高

连接表三

sht_3 = wb.sheets['表三']

查看A1单元格的宽和高

# 查看列宽

sht_3.range('A1').column_width

8.11

# 查看行高

sht_3.range('A1').row_height

13.8

A1单元格高改为15.6,宽改为2.2

sht_3.range('A1').column_width = 2.2

sht_3.range('A1').row_height = 15.6

修改表三B1单元格颜色

# 查看B1单元格颜色

sht_3.range('B1').color

(255, 0, 0)

# 修改B1单元格颜色为黑色

sht_3.range('B1').color = (0,0,0)

写一个自动化的小脚本

def f():

sht_3.range("A1:AZ48").column_width = 1.1

sht_3.range('A1:AZ48').row_height = 7.8

list_1 = pd.read_csv('zaike.csv').values

for i,j in list_1:

sht_3[int(i),int(j)].color = (255,25,0)

f()

list_1 = []

for i in range(30):

for j in range(40):

c = sht_3[i,j].color

if c == (255,0,0):

list_1.append((i,j))

这些小例子都能跑,你可以放自己电脑上运行下,或者手敲每个代码,这样绝对能高效率掌握。

如果对python语法还不熟悉,最好先把框架熟悉一遍,多做些练习。

手机处理器联发科p65相当于骁龙什么型号?

感谢大家的阅读,从手机cpu天梯图可以了解到,联发科cpu P65相当于骁龙670,但性能以及使用体验不如骁龙670,就连他的p70都比不上670.

Helio P70 的 GPU 依然采用 Helio P60 所搭载的 Mali-G72 MP3,但频率由此前的 800MHz 提升至 900MHz,不过公版 GPU 的性能天生要比高通的 Adreno 性能略差,Helio P70 采用的 Mali-G72 MP3 在实际表现上稍稍领先于骁龙 660 的 Adreno 512,而骁龙 670 在 GPU 方面的优势主要得益于 Adreno 615,相较 Helio P70 的 GPU 跑分高出 10000 分,同时骁龙 670 的综合跑分成绩已经超过 15 万分,而 Helio P70 的综合成绩落后了将近 10000 分的差距。

P65 的核心设计与 Helio P90 一样采用两颗大核心和六颗小核心,相较于 Helio P70 虽然将主频降低,但核心架构升级至和骁龙 670 一样的 Cortex-A75 和 Cortex-A55,虽然目前 Helio P65 的跑分成绩还没有出炉,但由于和骁龙 670 的 CPU 架构相同,想必两者之间在 CPU 的差距并不会拉开。GPU 方面虽然看似采用了降级的 Mali-G52,但实际上这款 GPU 的底层架构与 Mali-G76 一样,

哪位大神知道什么原因?

一,快门。1/10之类,就算有防抖也难免会救回来

二,深景。有时候为了bokeh,光圈使劲的开,对焦稍微偏移就模糊了

三,对焦。有时对焦后构图,这也会导致跑焦的