PaddlePaddle学习课程——课节3:AI Studio基本操作(一)
一、Baidu AI Studio简介
百度AI Studio是为了给广大开发者提供更加完善自由的编程环境,帮助您更快捷简便的完成深度学习项目,并持续提供更多的增值服务而设计研发的一站式开发平台。此平台集合了AI教程、代码环境、算法算力和数据集,并为大家提供了免费的在线云计算编程环境,您不需要再进行环境配置和依赖包等繁琐步骤,随时随地可以上线AI Studio开展您的深度学习项目。
AI Studio官网:http://aistudio.baidu.com/#/projectoverview
AI Studio具有如下四大特性,期望能够带来全方位的服务:
一、云端集成
在云端集成了视频教程、样例模型、代码、计算资源、比赛平台等多种能力,您可以一站式达到学、练、用的目的,免除环境配置的困扰。
二、简单易用
为初学者准备了多个领域的不同模型范例,以及数十个经典数据集,供学习练习使用。
三、运行高效
自动根据模型大小来分配计算资源,确保模型训练高效执行。
四、免费资源
视频教程、云空间、计算资源全部免费,给您所有您想要的支持。
除此之外,AI Studio还具有以下技术特色:
l 支持Python交互式编程语言开发环境,环境秒级启动。
l 同时支持单机训练和集群训练两种方式,单机独享2核4G计算资源,集群共享P40高性能集群。
l 提供海量高质量开放数据集,一键嵌入代码
l 环境集成PaddlePaddle深度学习框架,无需安装,使用便捷
二、如何创建一个项目
点击创建项目。
进行相应的标签补充。
创建成功。
三、使用方法
快捷键
和原生Notebook快捷键基本一致.
快捷键分成两种状态下的. 一个是命令模式, 一个是编辑模式, 掌握之后事半功倍.
Shell命令
通过在Shell命令前添加! (感叹号), 就可以执行部分Shell命令. 包括诸如 !pip install这样的命令. 不过, !apt-get这种可能引发用户进一步操作的命令是不支持的.
下面是两个示例.
# 查看当前挂载的数据集目录
!ls /home/aistudio/data/
#显示当前路径
!pwd
使用git命令来同步代码 (暂时需要Paddle 1.4.1以上)
例如:
!git clone https://github.com/weiexcelpro/models.git #Paddle官方模型
文件下载
文件下载分为"文件夹打包下载"和"单一文件下载", 两者操作按钮在同一位置:
但文件夹下载可能耗时比较久, 每次只能下载一个文件夹内容, 也可能需要较长时间等待.
Magic命令
Magic命令是Notebook的高级用法了. 可以运行一些特殊的指令. Magic 命令的前面带有一个或两个百分号(% 或 %%),分别代表行 Magic 命令和单元格 Magic 命令。行 Magic 命令仅应用于编写 Magic 命令时所在的行,而单元格 Magic 命令应用于整个单元格。
举个例子:
#显示全部可用的Magic命令
%lsmagic
Available line magics:
%alias %alias_magic %autoawait %autocall %automagic %autosave %bookmark %cat %cd %clear %colors %config %connect_info %cp %debug %dhist %dirs %doctest_mode %ed %edit %env %gui %hist %history %killbgscripts %ldir %less %lf %lk %ll %load %load_ext %loadpy %logoff %logon %logstart %logstate %logstop %ls %lsmagic %lx %macro %magic %man %matplotlib %mkdir %more %mv %notebook %page %pastebin %pdb %pdef %pdoc %pfile %pinfo %pinfo2 %popd %pprint %precision %prun %psearch %psource %pushd %pwd %pycat %pylab %qtconsole %quickref %recall %rehashx %reload_ext %rep %rerun %reset %reset_selective %rm %rmdir %run %save %sc %set_env %store %sx %system %tb %time %timeit %unalias %unload_ext %who %who_ls %whos %xdel %xmode
Available cell magics:
%%! %%HTML %%SVG %%bash %%capture %%debug %%file %%html %%javascript %%js %%latex %%markdown %%perl %%prun %%pypy %%python %%python2 %%python3 %%ruby %%script %%sh %%svg %%sx %%system %%time %%timeit %%writefile
Automagic is ON, % prefix IS NOT needed for line magics.
#使用Magic命令来统计运行时长
import random
%%timeit
prize = 0
for i in range(100):
roll = random.randint(1, 6)
if roll%2 == 0:
prize += roll
else:
prize -= 1
甚至还可以直接嵌入可视化内容, 例如%matplotlib inline:
%matplotlib inline
%config InlineBackend.figure_format = 'retina'
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0,1,300)
for w in range(2,6,2):
plt.plot(x, np.sin(np.pi*x)*np.sin(2*w*np.pi*x))
这里需要注意的是, 当前技术架构局限, 一个Cell里面只能输出一张图片. 如果输出多张图片, 可能会有显示异常的问题
%env:设置环境变量
使用该命令, 可以在不必重启Kernel的情况下管理notebook的环境变
# Running %env without any arguments
# lists all environment variables
# The line below sets the environment
# variable OMP_NUM_THREADS
%env OMP_NUM_THREADS=4
%run: 运行python代码
使用%run 可以运行.py格式的python代码
当然是用!python也是可以的
我在项目空间中上传了一个.py文件, 里面只有一行print代码. 我们执行一下看看.
%run work/SampleOfRun.py
!python work/SampleOfRun.py
%%writefile and %pycat: 导出cell内容/显示外部脚本的内容
AI Studio当前支持一定格式文件的预览和处理, 如果您的格式比较特殊, 尚未支持的话, 不妨试试这两个命令.
%%writefile magic可以把cell的内容保存到外部文件里。 而%pycat则可把外部文件展示在Cell中
%%writefile SaveToPythonCode.py
from math import sqrt
for i in range(2,10):
flag=1
k=int(sqrt(i))
for j in range(2,k+1):
if i%j==0:
flag=0
break
if(flag):
print(i)
Writing SaveToPythonCode.py
因为没有指定路径, 所以文件被保存到了根目录下. 但至少it work
我们再来尝试从中读文件内容
%pycat SaveToPythonCode.py
关于变量监控
你可以通过修改内核选项ast_note_interactivity,使得Jupyter对独占一行的所有变量或者语句都自动显示,这样你就可以马上看到多个语句的运行结果了。
!pip install pydataset
from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = "all"
from pydataset import data
quakes = data('quakes')
quakes.head()
quakes.tail()
关于调试代码
Notebook自带一个调试器, 叫The Python Debugger (pdb),我们来看看它是如何工作的.
# 对, 它也是依赖Magic命令启动的.
# 理论上pdb是可以通过脚本形式来启动. 但是在Notebook中不行, 会造成阻断
%pdb
def reverse(x: int) -> int:
inputnumber = x.__str__()
reversedStr = inputnumber[::-1]
strOriLen = len(reversedStr)
result = list()
flag = 1
for i in range(0, strOriLen):
if i == (strOriLen -1) and reversedStr[i] == '-' :
flag = -1
else:
result.append(reversedStr[i])
outputs = ''.join(result)
outputInt = int(outputs)
outputInt = outputInt * flag
if outputInt > pow(2,31)-1 or outputInt < -1 * pow(2,31):
outputInt = 0
return outputInt
print(reverse(134))
Automatic pdb calling has been turned OFF
431
以上代码皆来自于Paddle Paddle官方网站中。