zoukankan      html  css  js  c++  java
  • 01 百度 AI Studio 基础操作记录(一) Notebook

    转载参考:

    AI Studio基本操作(一) Notebook篇

       

    一、基础

       

    1、新建文件:

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

       

    !cat <<newfile > newfile.py

       

       

    2、上传Notebook

    可以使用自己本地的ipynb文件取代当前默认的Notebook(只要格式合法即可)

       

       

    3Notebook快捷键:

    和原生notebook快捷键基本一致

    快捷键分成两种模式:

    • 命令行模式
    • 编辑模式

       

       

       

    4、暗黑模式:

    官方暂时不支持,可以使用浏览器插件:

    • Chrome下请搜索: 夜间眼睛
    • Firefox下请搜索: Dark Reader

    效果如图:

       

    5Notebook中使用shell命令:

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

    下面是两个示例:

    # 查看当前挂载的数据集目录

    !ls /home/aistudio/data/

       

    运行时长: 390毫秒

    结束时间: 2020-05-01 18:36:26

    data269

       

    #显示当前路径

    !pwd

       

    /home/aistudio

       

    6、使用pip来安装需要的package(不支持apt-get等用户会进一步操作的命令):

    例如:

    !pip install jupyterthemes

       

    查看当前环境中安装的package

    !pip list --format=columns

       

       

    #以及使用下方命令查看预装软件

    !apt list

       

       

    7、持久化安装:

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

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

       

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

    import sys

    syspathappend('/home/aistudio/external-libraries')

       

       

    8、使用Git命令来同步代码(暂时需要Paddle1.4.1版以上):

    %cd work/

    /home/aistudio/work

       

    !git clone https://githubcom/PaddlePaddle/Paddlegit  #Paddle官方模型

       

       

       

    可以看到同步后work目录下出现一个Models文件夹,官方文档是多了一个models文件夹

       

    本人实测多了一个Paddle文件夹

       

    也可以活用Git命令进行本地代码管理

    注意: Paddle的Git体积过大, 同步会非常迟缓。 建议使用浏览器插件, 对指定目录进行下载, 然后上传至AI Studio的项目空间中。 Chrome版

       

    9、文件下载:

    文件下载分为2种:

    • 单一文件下载
    • 文件夹打包下载

       

    :但文件夹下载可能耗时比较久, 每次只能下载一个文件夹内容, 也可能需要较长时间等待。

       

    10Python代码调试与执行:

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

    • 传统IDE, 当点击Run按钮时, 编译器/解释器开始构建一个进程。 用户通过单步执行/设置断点进行代码调试和变量监控。 当代码出错, 或用户点击Stop按钮时, 进程被杀死, 资源回收。
      • 而Notebook, 一旦启动, 就是开始创建一个"进程"(kernel)。 每一个Cell, 都是一个天然的断点。 当代码出错, 或用户点击Stop按钮时, "进程"通常也不会被杀死。
      • 因此如果代码陷入死循环等情况, 需要用户手动关闭并重启该"进程"。

           

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

         

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

       

    11、变量监控:

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

       

    通过重启环境并清空输出, 可以消除已生成的变量监控。

       

       

    二、Magic命令

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

    举个例子:

    1、显示全部可用的Magic命令

    #显示全部可用的Magic命令

    %lsmagic

       

    列出magic命令列表如下:

    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

     ……

     %who

    %who_ls

    %whos

    %xdel

    %xmode

    Available cell magics:

    %%!

    %%HTML

    %%SVG

    %%bash

    %%capture

    %%debug

    %%file

    %%html

    %%javascript

    %%js

    %%latex

    %%markdown

    %%perl

    %%prun

    ……

    %%system

    %%time

    %%timeit

    %%writefile

       

    Automagic is ON, % prefix IS NOT needed for line magics.

       

    2、使用Magic命令来统计运行时长

    #使用Magic命令来统计运行时长

    import random

    %%timeit

    prize = 0 

    for i in range(100):

        roll = random.randint(16)

        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)

       

    3、直接嵌入可视化内容

    甚至还可以直接嵌入可视化内容, 例如%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里面只能输出一张图片. 如果输出多张图片, 可能会有显示异常的问题

       

    4、设置环境变量

    %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

       

    env: OMP_NUM_THREADS=4

       

    5%run: 运行python代码

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

    当然是用!python也是可以的

    我在项目空间中上传了一个.py文件, 里面只有一行print代码。 我们执行一下看看:

       

    %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

       

    6%%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 SaveToPythonCode.py

       

    更多Magic命令可以点击这里查询 Magic命令

       

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

    在要查询的对象前输入?或??并执行即可。 单问号是普通信息, 双问号是详细信息。前提: 该对象方法已经被正确导入(import)

       

    示例:

    import paddle

    import paddle.fluid

       

    ?paddle.fluid.layers.conv3d

    Object `paddle.fluid.layers.conv3d` not found.

       

    四、关于变量监控

    你可以通过修改内核选项ast_note_interactivity,使得Jupyter独占一行的所有变量或者语句都自动显示,这样你就可以马上看到多个语句的运行结果了。

       

    示例:

    !pip install pydataset

       

    Looking in indexes: https://pypi.mirrors.ustc.edu.cn/simple/
    Collecting pydataset
    Downloading https://mirrors.tuna.tsinghua.edu.cn/pypi/web/packages/4f/15/548792a1bb9caf6a3affd61c64d306b08c63c8a5a49e2c2d931b67ec2108/pydataset-0.2.0.tar.gz (15.9MB)
    |████████████████████████████████| 15.9MB 99kB/s eta 0:00:011…………

    …………………………

    …………………………

    …………………………

    Successfully built pydataset
    Installing collected packages: pydataset
    Successfully installed pydataset-0.2.0

       

    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

    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 -1and 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

  • 相关阅读:
    mac搭建mamp环境
    iOS开发UI篇—UITabBarController生命周期(使用storyoard搭建)
    iOS开发UI篇—UITabBarController简单介绍
    OS开发UI篇—ios应用数据存储方式(归档)
    iOS开发UI篇—ios应用数据存储方式(偏好设置)
    IOS开发UI篇—ios应用数据存储方式(XML属性列表-plist)
    iOS开发UI篇—控制器的View的创建
    iOS开发UI篇—UIWindow简单介绍
    iOS开发UI篇—使用storyboard创建导航控制器以及控制器的生命周期
    IOS开发UI篇—导航控制器属性和基本使用
  • 原文地址:https://www.cnblogs.com/xlfcjx/p/12819497.html
Copyright © 2011-2022 走看看