飞桨AIStudio基础操作

目录

执行和调试

多文件代码编辑

上传Notebook

Notebook快捷键

Notebook中使用Shell命令

查看文件夹目录

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

查看当前环境中安装的package

持久化安装

文件下载

Python代码执行与调试

变量监控

Magic命令

%env:设置环境变量

%run: 运行python代码

%%writefile and %pycat: 导出cell内容/显示外部脚本的内容

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


执行和调试

基于Notebook的方案和传统IDE方案略有不同, 请见下图:飞桨AIStudio基础操作_第1张图片

多文件代码编辑

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

用户也可以使用命令, !cat < newfile.py 在项目空间内直接创建文件, 之后双击进行编辑. 如下图所示:
飞桨AIStudio基础操作_第2张图片

上传Notebook

可以用自己的ipynb文件取代当前默认的Notebook(前提是格式合法)
飞桨AIStudio基础操作_第3张图片

Notebook快捷键

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

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

飞桨AIStudio基础操作_第4张图片
飞桨AIStudio基础操作_第5张图片

Notebook中使用Shell命令

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

查看文件夹目录

# 查看当前挂载的数据集目录
!ls /home/aistudio/data/

显示当前路径 

#显示当前路径
!pwd

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

!pip install jupyterthemes

查看当前环境中安装的package

!pip list --format=columns

持久化安装

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

!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官方模型
  • 1
  • 2

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文件夹
飞桨AIStudio基础操作_第6张图片
也可以活用Git命令进行本地代码管理.

文件下载

文件下载分为"文件夹打包下载"和"单一文件下载", 两者操作按钮在同一位置:
飞桨AIStudio基础操作_第7张图片
但文件夹下载可能耗时比较久, 每次只能下载一个文件夹内容, 也可能需要较长时间等待.

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是可以随意颠倒顺序来执行的, 因此本平台自带"变量监控"和"运行历史". 方便用户了解当前代码运行状态.

通过重启环境并清空输出, 可以消除已生成的变量监控.
飞桨AIStudio基础操作_第8张图片

Magic命令

Magic命令是Notebook的高级用法了. 可以运行一些特殊的指令. Magic 命令的前面带有一个或两个百分号(% 或 %%),分别代表行 Magic 命令和单元格 Magic 命令。行 Magic 命令仅应用于编写 Magic 命令时所在的行,而单元格 Magic 命令应用于整个单元格。

#显示全部可用的Magic命令
%lsmagic
  • 1
  • 2

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
  • 1
  • 2
%%timeit

prize = 0 
for i in range(100):
    roll = random.randint(1, 6)
    if roll%2 == 0:
        prize += roll
    else:
        prize -= 1
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

[]
[]
飞桨AIStudio基础操作_第9张图片
这里需要注意的是, 当前技术架构局限, 一个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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
# Running %env without any arguments
# lists all environment variables

# The line below sets the environment
# variable OMP_NUM_THREADS
%env OMP_NUM_THREADS=4
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

env: OMP_NUM_THREADS=4


%run: 运行python代码

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

当然是用!python也是可以的

我在项目空间中上传了一个.py文件, 里面只有一行print代码. 我们执行一下看看.
飞桨AIStudio基础操作_第10张图片

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

paddlepaddle

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

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.
飞桨AIStudio基础操作_第11张图片
我们再来尝试从中读文件内容

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

更多magic命令:Built-in magic commands — IPython 7.31.0 documentation

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

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

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

示例:

import paddle
?paddle.nn.Conv3D

你可能感兴趣的:(paddlepaddle,python,人工智能)