文档简介:
Hi 大家好, 我是百度AI Studio小助手.
大家在学习《百度架构师手把手带你零基础入门深度学习》课程的过程中将会经常使用到AI Studio中的Notebook项目,所以今天给大家介绍一些Notebook项目基本操作.
项目启停 执行和调试 多文件代码编辑 上传Notebook Notebook快捷键 暗黑模式 字号调节 Notebook中使用Shell命令 使用pip来安装自己需要的package (但不支持apt-get) 查看当前环境中安装的package 持久化安装 使用git命令来同步代码 (暂时需要Paddle 1.4.1以上) 文件下载 Python代码执行与调试 变量监控 Magic命令 %env:设置环境变量 %run: 运行python代码 %%writefile and %pycat: 导出cell内容/显示外部脚本的内容 关于快速查看某个对象/方法/接口的用法 关于变量监控 关于调试代码
# 查看当前挂载的数据集目录 !ls /home/aistudio/data/
data269
#显示当前路径 !pwd
/home/aistudio
!pip install jupyterthemes
!pip list --format=columns
Package Version ------------------ --------------- absl-py 0.8.1 attrs 19.2.0 backcall 0.1.0 bleach 3.1.0 certifi 2019.9.11 chardet 3.0.4 Click 7.0 cloudpickle 1.2.1 cma 2.7.0 cycler 0.10.0 Cython 0.29 decorator 4.4.0 entrypoints 0.3 Flask 1.1.1 funcsigs 1.0.2 future 0.18.0 graphviz 0.13 grpcio 1.24.1 gym 0.12.1 h5py 2.9.0 idna 2.8 imageio 2.6.1 imageio-ffmpeg 0.3.0 importlib-metadata 0.23 ipykernel 5.1.0 ipython 7.0.1 ipython-genutils 0.2.0 itsdangerous 1.1.0 jedi 0.15.1 Jinja2 2.10.1 jsonschema 3.1.1 jupyter-client 5.3.3 jupyter-core 4.5.0 kiwisolver 1.1.0 Markdown 3.1.1 MarkupSafe 1.1.1 matplotlib 2.2.3 mistune 0.8.4 more-itertools 7.2.0 moviepy 1.0.1 nbconvert 5.3.1 nbformat 4.4.0 nltk 3.4.5 notebook 5.7.0 numpy 1.16.4 opencv-python 4.1.1.26 paddlehub 1.2.0 paddlepaddle-gpu 1.5.1.post97 pandas 0.23.4 pandocfilters 1.4.2 parl 1.1.2 parso 0.5.1 pexpect 4.7.0 pickleshare 0.7.5 Pillow 6.2.0 pip 19.2.3 prettytable 0.7.2 proglog 0.1.9 prometheus-client 0.5.0 prompt-toolkit 2.0.10 protobuf 3.10.0 ptyprocess 0.6.0 pyarrow 0.13.0 pyglet 1.4.5 Pygments 2.4.2 pyparsing 2.4.2 pyrsistent 0.15.4 python-dateutil 2.8.0 pytz 2019.3 PyYAML 5.1.2 pyzmq 18.0.1 rarfile 3.1 recordio 0.1.7 requests 2.22.0 scikit-learn 0.20.0 scipy 1.3.0 Send2Trash 1.5.0 setuptools 41.4.0 simplegeneric 0.8.1 six 1.12.0 sklearn 0.0 tb-nightly 1.15.0a20190801 tb-paddle 0.3.6 tensorboardX 1.8 termcolor 1.1.0 terminado 0.8.2 testpath 0.4.2 tornado 5.1.1 tqdm 4.36.1 traitlets 4.3.3 urllib3 1.25.6 visualdl 1.3.0 wcwidth 0.1.7 webencodings 0.5.1 Werkzeug 0.16.0 wheel 0.33.6 zipp 0.6.0
#以及使用下方命令查看预装软件 !apt list
%cd work/
/home/aistudio/work
!git clone https://github.com/PaddlePaddle/Paddle.git #Paddle官方模型
可以看到同步后work目录下出现一个Models文件夹
也可以活用Git命令进行本地代码管理.
注意: Paddle的Git体积过大, 同步会非常迟缓. 建议使用浏览器插件, 对指定目录进行下载, 然后上传至AI Studio的项目空间中. Chrome版
或是用svn: 比如你要下载这个https://github.com/mozilla/pdf.js/tree/master/test/pdfs ,将/tree/master/换成/trunk/即可
svn checkout https://github.com/mozilla/pdf.js/trunk/test/pdfs
Python代码执行与调试
Notebook执行Python代码的原理和传统IDE略有不同.
- 传统IDE, 当点击Run按钮时, 编译器/解释器开始构建一个进程. 用户通过单步执行/设置断点进行代码调试和变量监控. 当代码出错, 或用户点击Stop按钮时, 进程被杀死, 资源回收.
而Notebook, 一旦启动, 就是开始创建一个"进程"(kernel). 每一个Cell, 都是一个天然的断点. 当代码出错, 或用户点击Stop按钮时, "进程"通常也不会被杀死.
因此如果代码陷入死循环等情况, 需要用户手动关闭并重启该"进程".
-
此外, Notebook的Cell是可以随意颠倒顺序来执行的. 这点和传统IDE有很大不同.
-
作为前端的Notebook, 与后端的进程(kernel), 建立有一个Session. 本平台支持terminal功能. 也就可以同时支持多个Session来控制kernel.
#显示全部可用的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 %ma
n %matplotlib %mkdir %more %mv %notebook %page %pastebin %pdb %pdef %pdoc %pfile %pinfo %p
info2 %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 %%fil
e %%html %%javascript %%js %%latex %%markdown %%perl %%prun %%pypy %%python %%python2 %%pyt
hon3 %%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
175 µs ± 2.12 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)
甚至还可以直接嵌入可视化内容, 例如%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要输出多张图片, 代码写法和输出一张时不一样. 写法不正确的话, 可能会有显示异常的问题
此外, 如要显示汉字, 也需要提前处理, 可以参见这里
# Running %env without any arguments # lists all environment variables # The line
below sets the environment # variable OMP_NUM_THREADS %env OMP_NUM_THREADS=4
env: OMP_NUM_THREADS=4
%run work/SampleOfRun.py
It's a demo code written in file SampleOfRun.py
!python work/SampleOfRun.py
It's a demo code written in file SampleOfRun.py
%%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 works.
我们再来尝试从中读文件内容
%pycat SaveToPythonCode.py
更多Magic命令可以点击这里查询 Magic命令
import paddle import paddle.fluid
?paddle.fluid.layers.conv3d
!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()
initiated datasets repo at: /home/aistudio/.pydataset/
lat long depth mag stations 1 -20.42 181.62 562 4.8 41 2 -20.62 181.03 650 4.2 15 3 -
26.00 184.10 42 5.4 43 4 -17.97 181.66 626 4.1 19 5 -20.42 181.96 649 4.0 11
lat long depth mag stations 996 -25.93 179.54 470 4.4 22 997 -12.28 167.06 248 4.7
35 998 -20.13 184.20 244 4.5 34 999 -17.40 187.80 40 4.5 14 1000 -21.59 170.56 165 6.0 119
# 对, 它也是依赖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
有余力的与兴趣的同学可以继续了解AI Studio其它基本操作。
AI Studio基本操作(二)