PP飞桨 AI studio Notebook基础操作学习

执行和调试

基于Notebook的方案和传统IDE方案略有不同, 请见下图:在这里插入图片描述

多文件代码编辑

本系统的Notebook支持多文件编辑, 支持.py, .json, .txt, .log等格式的在线编辑, 支持部分图片类型文件的在线预览.
上传文件的体积是30MB. 如果需要引用更大体积的文件, 请使用数据集功能.

用户也可以使用命令, !cat <<newfile > newfile.py 在项目空间内直接创建文件, 之后双击进行编辑. 如下图所示:
在这里插入图片描述

上传Notebook

可以用自己的ipynb文件取代当前默认的Notebook(前提是格式合法)
上传Notebook

Notebook快捷键

和原生Notebook快捷键基本一致.

快捷键分成两种状态下的. 一个是命令模式, 一个是编辑模式, 掌握之后事半功倍.

在这里插入图片描述
在这里插入图片描述

Notebook中使用Shell命令

通过在Shell命令前添加! (感叹号), 就可以执行部分Shell命令. 包括诸如 !pip install这样的命令. 不过, !apt-get这种可能引发用户进一步操作的命令是不支持的.

下面是两个示例.

# 查看当前挂载的数据集目录
!ls /home/aistudio/data/
#显示当前路径
!pwd

/home/aistudio

使用pip来安装自己需要的package (但不支持apt-get)

例如:

!pip install jupyterthemes

查看当前环境中安装的package

!pip list --format=columns

Package Version


absl-py 0.8.1
aspy.yaml 1.3.0
astor 0.8.1
astroid 2.4.1
attrs 19.2.0
audioread 2.1.8
autopep8 1.5.3
Babel 2.8.0
backcall 0.1.0
bce-python-sdk 0.8.53
blackhole 0.3.1+5.g4015d80.dirty
bleach 3.1.0
cachetools 4.0.0
certifi 2019.9.11
cffi 1.14.0
cfgv 2.0.1
chardet 3.0.4
Click 7.0
cloudpickle 1.2.1
cma 2.7.0
colorama 0.4.4
colorlog 4.1.0
cycler 0.10.0
Cython 0.29
datatable 1.0.0a0+build.1606902301.jarvis
decorator 4.4.0
entrypoints 0.3
et-xmlfile 1.0.1
flake8 3.8.2
Flask 1.1.1
Flask-Babel 1.0.0
Flask-Cors 3.0.8
forbiddenfruit 0.1.3
funcsigs 1.0.2
future 0.18.0
gast 0.3.3
google-auth 1.10.0
google-auth-oauthlib 0.4.1
graphviz 0.13
grpcio 1.26.0
gunicorn 20.0.4
gym 0.12.1
h2o 3.29.0.99999
h5py 2.9.0
identify 1.4.10
idna 2.8
imageio 2.6.1
imageio-ffmpeg 0.3.0
importlib-metadata 0.23
ipykernel 5.1.0
ipython 7.8.0
ipython-genutils 0.2.0
isort 4.3.21
itsdangerous 1.1.0
jdcal 1.4.1
jedi 0.17.0
jieba 0.42.1
Jinja2 2.10.3
joblib 0.14.1
JPype1 0.7.2
json5 0.9.5
jsonschema 3.1.1
jupyter-client 5.3.4
jupyter-core 4.6.0
jupyter-lsp 0.8.0
jupyterlab 2.1.3
jupyterlab-server 1.1.5
kiwisolver 1.1.0
lazy-object-proxy 1.4.3
librosa 0.7.2
llvmlite 0.31.0
Markdown 3.1.1
MarkupSafe 1.1.1
matplotlib 2.2.3
mccabe 0.6.1
mistune 0.8.4
more-itertools 7.2.0
moviepy 1.0.1
nbconvert 5.3.1
nbformat 4.4.0
netifaces 0.10.9
networkx 2.4
nltk 3.4.5
nodeenv 1.3.4
notebook 5.7.8
numba 0.48.0
numpy 1.16.4
oauthlib 3.1.0
objgraph 3.4.1
opencv-python 4.1.1.26
openpyxl 3.0.5
paddlehub 1.6.0
paddlepaddle 2.0.0
pandas 0.23.4
pandocfilters 1.4.2
parl 1.3.2
parso 0.7.0
pathlib 1.0.1
pexpect 4.7.0
pickleshare 0.7.5
Pillow 7.1.2
pip 19.2.3
pluggy 0.13.1
pre-commit 1.21.0
prettytable 0.7.2
proglog 0.1.9
prometheus-client 0.5.0
prompt-toolkit 2.0.10
protobuf 3.12.2
psutil 5.7.2
ptyprocess 0.6.0
pyarrow 2.0.0
pyasn1 0.4.8
pyasn1-modules 0.2.7
pycodestyle 2.6.0
pycparser 2.19
pycryptodome 3.9.9
pydataset 0.2.0
pydocstyle 5.0.2
pyflakes 2.2.0
pyglet 1.4.5
Pygments 2.4.2
pylint 2.5.2
pynvml 8.0.4
pyparsing 2.4.2
pyrsistent 0.15.4
python-dateutil 2.8.0
python-jsonrpc-server 0.3.4
python-language-server 0.33.0
pytz 2019.3
PyYAML 5.1.2
pyzmq 18.0.1
rarfile 3.1
recordio 0.1.7
requests 2.22.0
requests-oauthlib 1.3.0
resampy 0.2.2
rope 0.17.0
rsa 4.0
scikit-learn 0.22.1
scipy 1.3.0
seaborn 0.10.0
Send2Trash 1.5.0
sentencepiece 0.1.85
setuptools 41.4.0
six 1.15.0
sklearn 0.0
snowballstemmer 2.0.0
SoundFile 0.10.3.post1
tabulate 0.8.3
tb-nightly 1.15.0a20190801
tb-paddle 0.3.6
tensorboard 2.1.0
tensorboardX 1.8
termcolor 1.1.0
terminado 0.8.2
testpath 0.4.2
toml 0.10.0
tornado 6.0.3
tqdm 4.36.1
traitlets 4.3.3
typed-ast 1.4.1
ujson 1.35
urllib3 1.25.6
virtualenv 16.7.9
visualdl 2.1.0
wcwidth 0.1.7
webencodings 0.5.1
Werkzeug 0.16.0
wheel 0.33.6
wrapt 1.12.1
xarray 0.16.2
xgboost 1.1.0
xlrd 1.2.0
yapf 0.26.0
zipp 0.6.0

持久化安装

如果需要进行持久化安装, 需要使用持久化路径, 如下方代码示例:

!mkdir /home/aistudio/external-libraries
!pip install beautifulsoup4 -t /home/aistudio/external-libraries

同时添加如下代码, 这样每次环境(kernel)启动的时候只要运行下方代码即可:

import sys
sys.path.append('/home/aistudio/external-libraries')

使用git命令来同步代码 (暂时需要Paddle 1.4.1以上)
例如:

%cd work/

/home/aistudio/work

## 可以用gitee,速度会快一些
!git clone https://github.com/PaddlePaddle/Paddle.git  #Paddle官方模型

Cloning into ‘Paddle’…
remote: Enumerating objects: 30627, done.
remote: Counting objects: 100% (30627/30627), done.
remote: Compressing objects: 100% (11396/11396), done.
remote: Total 333257 (delta 24891), reused 23673 (delta 19199), pack-reused 302630
Receiving objects: 100% (333257/333257), 190.23 MiB | 23.88 MiB/s, done.
Resolving deltas: 100% (276137/276137), done.
Checking connectivity… done.
可以看到同步后work目录下出现一个Paddle文件夹
在这里插入图片描述
也可以活用Git命令进行本地代码管理.

文件下载

文件下载分为"文件夹打包下载"和"单一文件下载", 两者操作按钮在同一位置:
在这里插入图片描述
但文件夹下载可能耗时比较久, 每次只能下载一个文件夹内容, 也可能需要较长时间等待.

Python代码执行与调试

Notebook执行Python代码的原理和传统IDE略有不同.

  1. 传统IDE, 当点击Run按钮时, 编译器/解释器开始构建一个进程. 用户通过单步执行/设置断点进行代码调试和变量监控. 当代码出错, 或用户点击Stop按钮时, 进程被杀死, 资源回收.

而Notebook, 一旦启动, 就是开始创建一个"进程"(kernel). 每一个Cell, 都是一个天然的断点. 当代码出错, 或用户点击Stop按钮时, "进程"通常也不会被杀死.

因此如果代码陷入死循环等情况, 需要用户手动关闭并重启该"进程".

  1. 此外, Notebook的Cell是可以随意颠倒顺序来执行的. 这点和传统IDE有很大不同.

  2. 作为前端的Notebook, 与后端的进程(kernel), 建立有一个Session. 未来本平台将支持terminal功能. 也就可以同时支持多个Session来控制kernel.

变量监控

因为Notebook的Cell是可以随意颠倒顺序来执行的, 因此本平台自带"变量监控"和"运行历史". 方便用户了解当前代码运行状态.

通过重启环境并清空输出, 可以消除已生成的变量监控.
在这里插入图片描述

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 %conda %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 %pip %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

131 µs ± 1.66 µ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))
/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/matplotlib/cbook/__init__.py:2349: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop working
  if isinstance(obj, collections.Iterator):
/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/matplotlib/cbook/__init__.py:2366: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop working
  return list(data) if isinstance(data, collections.MappingView) else data

[<matplotlib.lines.Line2D at 0x7efe9e9c3a10>]
[<matplotlib.lines.Line2D at 0x7efe9c5443d0>]
在这里插入图片描述
这里需要注意的是, 当前技术架构局限, 一个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
# 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: 运行python代码

使用%run 可以运行.py格式的python代码

当然是用!python也是可以的

我在项目空间中上传了一个.py文件, 里面只有一行print代码. 我们执行一下看看.
在这里插入图片描述

%run /home/aistudio/work/SampleOfRun.py

paddlepaddle

!python /home/aistudio/work/SampleOfRun.py

paddlepaddle

%%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 works.
在这里插入图片描述
我们再来尝试从中读文件内容

%pycat /home/aistudio/work/SaveToPythonCode.py

更多magic命令:https://ipython.readthedocs.io/en/stable/interactive/magics.html

关于快速查看某个对象/方法/接口的用法

在要查询的对象前输入?或??并执行即可. 单问号是普通信息, 双问号是详细信息.

前提: 该对象方法已经被正确导入(import)

示例:

import paddle
?paddle.nn.Conv3D

关于变量监控

你可以通过修改内核选项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()

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

关于调试代码

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

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值