本文内容汇总

  1. Anaconda(python3.7)和原生python3.7安装tensorflow
  2. 警告 AVX2 FMA
  3. 报错 'tensorflow' has no attribute 'xxxx'类错误
  4. tensorflow导入mnist数据集出现的一些错误
  5. 使用Pycharm,无法import tensorflow
  6. tf.summary.FileWriter(),提示 PermissionDeniedError
  7. 执行pip install XXX 出现Script file 'E:AnacondaScriptspip-script.py' is not present. 及pip不存在报错
  8. tensorflow下已经初始化,但报错FailedPreconditionError: Attempting to use uninitialized value X
  9. 加载CIFAR10数据集出现的一些报错

1.Anaconda(python3.7)和原生python3.7安装tensorflow

我计算机上同时安装了Anaconda(python3.7)和原生python3.7,两者冲突问题已经解决,参见另一篇文章。无论Anaconda还是原生python,使用pip install tensorflow==1.14都能够安装成功。

但我看网上的帖子,似乎tensorflow原来只支持到python3.5,更高版本不支持(到18年是这样,但实际我已经安装成功了),而网友安装了Anaconda(python3.7),为解决这个问题,可使用conda 创建虚拟python3.5环境,然后安装tensorflow就行。例如<TensorFlow安装和下载>就说道,

1.在命令行中使用以下命令创建 conda 环境(如果使用 Windows,最好在命令行中以管理员身份执行):
conda create -n tensorflow python=3.5
2.激活 conda 环境:activate tensorflow
3.根据要在 conda 环境中安装的 TensorFlow 版本,输入以下命令:pip install tensorflow==1.13.1
4.在命令行中禁用 conda 环境(Windows 调用 conda deactivate命令)
5.(安装后?禁用conda后?)现在可以执行第一个 TensorFlow 程序了

可我尝试了下这个方法,发现有问题,明明已经提示安装成功了,但是import tensorflow就会提示没有这个tf这个库,pip uninstall则提示都没安装tf这个库,总之就很奇怪。我不知道这些帖子是怎么操作的。另外,每次想使用tf,都需要先conda activate python35 激活这个python3.5环境才可以吗?岂不是很麻烦。还是说不管激不激活,但凡使用tf都是自动配合的python3.5?没想通这个问题,留待以后吧

2.警告 AVX2 FMA

在运行TensorFlow的代码时,遇到了以下关于AVX的警告。

warning:Your CPU supports instructions that this TensorFlow binary was not
compiled to use: AVX2 FMA

大意为:你的CPU支持AVX扩展,但是你安装的TensorFlow版本无法编译使用。

通过在代码中添加以下两语句,警告就不在出现了

import 

AVX补充知识:

除了通常的算术和逻辑,现代CPU提供了许多低级指令,称为扩展,例如, SSE2,SSE4,AVX等来自维基百科:
高级矢量扩展(AVX)是英特尔在2008年3月提出的英特尔和AMD微处理器的x86指令集体系结构的扩展,英特尔首先通过Sandy Bridge处理器在2011年第一季度推出,随后由AMD推出Bulldozer处理器在2011年第三季度.AVX提供了新功能,新指令和新编码方案。
特别是,AVX引入了融合乘法累加(FMA)操作,加速了线性代数计算,即点积,矩阵乘法,卷积等几乎所有机器学习训练都涉及大量这些操作,因此将会支持AVX和FMA的CPU(最高达300%)更快。该警告指出您的CPU确实支持AVX(hooray!)

并需要注意:

这只限于CPU。如果你有一个GPU,你不应该关心AVX的支持,因为大多数昂贵的操作将被分派到一个GPU设备上(除非明确地设置)。在这种情况下,您可以简单地忽略此警告。

那为什么会出现这种警告呢?

由于tensorflow默认分布是在没有CPU扩展的情况下构建的,例如SSE4.1,SSE4.2,AVX,AVX2,FMA等。默认版本(来自pip install tensorflow的版本)旨在与尽可能多的CPU兼容。另一个观点是,即使使用这些扩展名,CPU的速度也要比GPU慢很多,并且期望在GPU上执行中型和大型机器学习培训。

解决方法:

  • 如果安装的是GPU版本

如果你有一个GPU,你不应该关心AVX的支持,因为大多数昂贵的操作将被分派到一个GPU设备上(除非明确地设置)。在这种情况下,您可以在代码中添加以下语句简单地忽略此警告:

import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'

  • 如果安装的是CPU版本(pip install tensorflow)

(1).在代码中加入如下代码,忽略警告:

import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'

(2).编译TensorFlow源码
如果您没有GPU并且希望尽可能多地利用CPU,那么如果您的CPU支持AVX,AVX2和FMA,则应该从针对CPU优化的源构建tensorflow。在这个问题中已经讨论过这个问题,也是这个GitHub问题。 Tensorflow使用称为bazel的ad-hoc构建系统,构建它并不是那么简单,但肯定是可行的。在此之后,不仅警告消失,tensorflow性能也应该改善。

本部分内容整理自CSDN博主「涛哥带你学编程」,并参考了stack overflow的英文讨论,另补充了自己遇到的实际情况。

3.报错 'tensorflow' has no attribute 'xxxx'类错误

第一种情况:如果不是第二种情况,确认tensorflow不是空库。

我在Pycharm上使用,程序没有问题,却报错AttributeError: 'module' object has no attribute 'global_variables_initializer'。

尝试解决方法如下:将tf.global_variables_initializer()更改为tf.initialize_all_variables()解决了问题,说明了pycharm使用的TF是旧版本。很奇怪,我anaconda安装的TF是比较新的版本,在cmd和Notepad++中用tf.global_variables_initializer()都是没问题的,奇怪

第二种情况:

在pip install tensorflow安装tensorflow库之后,运行代码,会遇见以下各种错误,这些错误都是相似的,表明tensorflow库是空库,无这些属性。

AttributeError

我按照网上方法尝试卸载、再重新安装tensorflow库,运行代码还是报错。经过更为细致的查找,明白了问题所在。

Google推出了tensorflow1.x 和tensorflow2.0两大类版本,其中2.0版本的推出是为了应对在动态图功能上更为强大的Pytorch库(Facebook所有)。2.0版本大幅更新,很多1.x版本的程序、语句在2.0上运行就会报错。我是在2019年10月使用pip install tensorflow安装tensorflow库的,则默认安装的2.0版本,所以要运行网上的tensorflow程序,需要安装1.x版本。例如,看到一个18年上传的GitHub项目,作者竟然还是用1.8这样的老版本开发的,一些语句甚至1.13版本运行都会出错。

我遇到的一种情况,可以作为这种解释的例证:

原来函数是这样写的

选择 1.x 版本进行开发,尽量使用 TensorFlow 1.13.1、1.14 版本为主。因为 TensorFlow 2.x 版本的代码是基于 TensorFlow 1.13.1 转化而来。TensorFlow 1.13.1 版本可以部分支持 TensorFlow 2.0 版本的代码。而 1.14 版本在 1.13 基础上又更新了一代,相对更为稳定。这次我就卸载了2.0版,安装了1.14版本。

pip uninstall tensorflow
pip install tensorflow==1.14

GitHub上有关于此类报错的探讨,他们报错的原因可能是window系统下 anaconda的一些配置问题(这里不太理解,此外我对anaconda使用的很少,相关的命令也不太会使用,需要研究一下,可以参见<恢复anaconda环境, 卸载和重装anaconda>与<Windows下 TensorFlow 的安装(包含:CUP版、GPU版、CUDA、cuDNN)>)

tensorflow1.0版本和2.0版本的比较,何种情况下使用相应版本比较好,以及两种版本的程序如何移植和兼容,参见我的另一篇<机器学习——TensorFlow库1.x版本和2.0版本比较、兼容、程序移植>

从GPU、CPU角度,还可以将tensorflow分为4个版本

  • tensorflow - 仅支持 CPU 的当前稳定版本(建议新手使用)
  • tensorflow-gpu - 支持 GPU 的当前稳定版本(Ubuntu 和 Windows)
  • tf-nightly - 仅支持 CPU 的每夜版(不稳定)
  • tf-nightly-gpu - 支持 GPU 的每夜版(不稳定,Ubuntu 和 Windows)

4.tensorflow导入mnist数据集出现的一些错误

安装好tensorflow后,导入mnist数据集也出了一些问题,让我折腾好久才明白。此处加以记录。

(1)首先需要明白tensorflow库、input_data.py

使用anaconda pip install tensorflow==1.14安装的tensorflow库,位于A:softwareAnaconda3Libsite-packagestensorflow(anaconda下载的库都在site-package这里)

使用GitHub手动从https://github.com/tensorflow/tensorflow下载的tensorflow库位于任意自己想放置的位置(本人放在Z:GitHub中)

不管tensorflow库是以上哪种方式下载的,包含的内容基本都是一致的(当然从GitHub上手动下载的内容更全,但所有必须的文件,两种方式都是有的)。即以下路径tensorflowexamplestutorialsmnistinputdata.py和文件input_data两种下载方式都是有的。

(2)有了上面的认识,接下来导入mnist数据集,并明白MNIST_data文件夹的位置

官方教程说是使用以下两句话导入mnist,我用anaconda-python也确实执行成功下载了,文件夹中下载了4个压缩包,mnist对象也有内容了。

#读取数据集,第一次tensorflow会自动下载数据集到下面路径文件中。
#原路径中若没有MNIST_data文件夹,则会自动创建之然后下载数据集
import tensorflow.examples.tutorials.mnist.input_data as input_data
mnist = input_data.read_data_sets("A:/software/Anaconda3/Lib/site-packages/tensorflow/examples/tutorials/mnist/MNIST_data", one_hot=True)

注意,一开始我犯了错误,直接粘贴了以下教程中的语句,执行后找不到MNIST_data文件夹在哪,以为下载失败。后来才发现在Z:/中,因为cmd执行时就base在Z:/。这个路径可以放在任意位置处,如自己当前所做的项目文件夹中,并不一定要放在tensorflow/examples/tutorials/mnist/MNIST_data库中。(当然,我目前还是放在了这个路径,方便以后自己用作他途)

#这是教程中的原句
import tensorflow.examples.tutorials.mnist.input_data as input_data
mnist = input_data.read_data_sets("MNIST_data/", one_hot=True)

看别人的例子,就能很明白

(3)因为各种原因(主要是谷歌服务器URL的一些问题?),mnist数据集没有下载成功

例如上面的图片,运行程序出现”URLError”错误的问题。这时,可以自行从MNIST官网下载数据集后下载数据集后,将数据集放到自己想放的路径下(比如项目文件夹而非tensorflow库下Z:python_codemy_projectMNIST_project1MNIST_data,这种情况MNISTdata文件夹是自己手动创建的,可不是python创建的,因为就没执行自动创建MNIST_data文件夹和下载数据集)。另外要注意,保持数据库压缩包状态,千万不要解压!不然会报错

然后再执行

#注意修改MNIST_data路径,比如这里为python_codemy_projectMNIST_project1MNIST_data
import tensorflow.examples.tutorials.mnist.input_data as input_data
mnist = input_data.read_data_sets("cmd目前所在路径/MNIST_data/", one_hot=True)

表明读取成功,然后就可以随意调用mnist对象了。

(4)使用左斜杠'/',或者使用双右斜杠'',右斜杠''可能会导致转义从而错误,这种错误就很low了,如下

使用左斜杠,则不存在这种错误

(5)一些遗留问题

(a)无论GitHub下载的还是python自己自动下载的MNIST数据集,在MNIST_data这个文件夹都有mnist.py这个文件。我不知道这个文件是干嘛的,因为执行mnist = input_data.read_data_sets("cmd目前所在路径/MNIST_data/", one_hot=True)这个语句看起来像是会创建mnist.py这个文件,然而不是。这个点一开始迷惑我很久,后来发现应该是误会。

在我自己的项目中,只有input_data.py和MNIST数据集(也可以没有MNIST_data这个文件夹和数据集,有一个input_data.py足以,再执行那两条语句就会自动下载数据集),并没有mnist.py,但并不影响运行。

(b)还有就是GitHub上手动下载的内容中包括的input_data.py似乎和python pip自动下载的tensorflow库中的input_data.py,不太一样。可能有内容更新吧。比如体现在以下这个问题:

对于三个不同位置处的input_data.py,分别从空白cmd-> python -> import 相应路径.input_data as input_data 就会是对的。而如果已经cmd-> python -> import python_code.my_project.MNIST_project1.input_data as input_data 后,再执行 import tensorflow.examples.tutorials.mnist.input_data as input_data就会提示各种奇怪的报错。不知道是什么原因,可能是两个input_data.py文件不太一样吧。

5. 使用Pycharm,无法import tensorflow

我安装的anaconda 中有两个python.exe文件。配置Pycharm interpreter编译器时,需要连接至这个最外层的python.exe(第一张图片), 因为此处的python才对应Anaconda3Libsite-packages中下载的各种库。

不太清楚A:softwareAnaconda3envspython35 中为什么会存在这个python35文件夹,照理说,一个anaconda不应该存在两个python.exe。估计是配置pycharm时,误用虚拟环境创建的,下载再安装anaconda时注意观察是否存在

参考网站:<MNIST官网> <tensorflow导入mnist数据集出错的解决办法> <TensorFlow读取MNIST数据集错误的问题>

6. tf.summary.FileWriter(),提示 PermissionDeniedError

Tensorflow下使用 tf.summary.FileWriter(),提示 PermissionDeniedError;

我的解决方法:把 tf.summary.FileWriter() 中的路径写成绝对路径 (好像这条没解决问题)

7. 执行pip install XXX 出现Script file 'E:AnacondaScriptspip-script.py' is not present. 及pip不存在报错

更新pip,使用的是

pip install --upgrade pip

执行此命令有可能不会成功,比如因为权限不够。这个操作可能造成已安装的pip包删除或破坏,然后再执行别的pip install的时候就一直提示Script file ‘E:AnacondaScriptspip-script.py’ is not present.这个错误。

解决方法,使用

easy_install pip

这个命令,再重新安装一下pip就好了

顺便查了一下pip 和easy_install 的区别:放上来方便记忆理解。

https://www.cnblogs.com/hdk1993/p/8010977.html

8. tensorflow下已经初始化,但报错FailedPreconditionError: Attempting to use uninitialized value X

在写程序初始化的时候一定要注意初始化的位置,并不是说自己的计算图搭建完成就要初始化,因为其中的组件可能本身也要申请变量,比如adam,这时最好是在程序运行前面添加变量的初始化,因为可以帮助你把后来模块中声明的变量同时进行初始化,参考下面报错案例1

import tensorflow as tf
W = tf.Variable(tf.zeros([2, 1]), name="weights")
b = tf.Variable(0., name="bias")def inference(X):...
def loss(X, Y):...
def inputs():...
# 本函数会用到优化器
def train(total_loss):learning_rate = 0.0000001#return tf.train.AdamOptimizer(0.0000001).minimize(total_loss)return tf.train.GradientDescentOptimizer(learning_rate).minimize(total_loss)def evaluate(sess, X, Y):...with tf.Session() as sess:X, Y = inputs()#init = tf.global_variables_initializer()total_loss = loss(X, Y)train_op = train(total_loss)coord = tf.train.Coordinator()threads = tf.train.start_queue_runners(sess=sess, coord=coord)init = tf.global_variables_initializer()#初始化所在的位置至关重要,以本程序为例,使用adam优化器时,会主动创建变量。#因此,如果这时的初始化位置在创建adam优化器之前,则adam中包含的变量会未初始化,然后报错。本行初始化时,可以看到Adam#已经声明,故不会出错sess.run(init)training_steps = 10000saver = tf.train.Saver()  #模型保存和恢复,当把改行放入for循环中以后,会发现程序执行速度明显变慢for step in range(training_steps):#saver = tf.train.Saver()sess.run(train_op)if step % 10 == 0:print("loss", sess.run(total_loss))if step % 1000 == 0:saver.save(sess, r"E:tf_project练习model_save_dirmy-model", global_step=step)evaluate(sess, X, Y)saver.save(sess, r"E:tf_project练习model_save_dirmy-model", global_step=training_steps)coord.request_stop()coord.join(threads)sess.close()

有时需要使用tf.local_variables_initializer(),如果使用tf.global_varialbes_initialize()时,会报错: Attempting to use uninitialized value,错误指向coord.join(threads),可能是这条语句在执行中会形成一些临时局部变量,具体是什么不太清楚。吊诡的是,我在别处另外几段代码中也使用了coord.join(threads)+global_varialbes_initialize()但并没有报错,不清楚什么原因。参考下面报错案例2

import numpy as np
import tensorflow as tfdef next_batch():datasets =  np.asarray(range(0,20))input_queue = tf.train.slice_input_producer([datasets],shuffle=False,num_epochs=1)data_batchs = tf.train.batch(input_queue,batch_size=5,num_threads=1,capacity=20,allow_smaller_final_batch=False)return data_batchsif __name__ == "__main__":data_batchs = next_batch()sess = tf.Session()# sess.run(tf.global_varialbes_initialize()) # 这里使用全局变量初始化器则会报错“变量未初始化”sess.run(tf.local_variables_initializer())coord = tf.train.Coordinator()threads = tf.train.start_queue_runners(sess,coord)try:while not coord.should_stop():data = sess.run([data_batchs])print(data)except tf.errors.OutOfRangeError:print("complete")finally:coord.request_stop()coord.join(threads)sess.close()# 输出
[array([0, 1, 2, 3, 4])]
[array([5, 6, 7, 8, 9])]
[array([10, 11, 12, 13, 14])]
[array([15, 16, 17, 18, 19])]
complete

解决办法:

  1. 试着换一下“全局变量”和“局部变量”初始化器,看看效果
  2. 仔细检查init+run语句位置,避免一些需要初始化的OP出现在run后面。例如上例中,data_batchs = next_batch()容易误放到后面
  3. 可以将两种初始化器结合起来,确保任何变量都初始化 init = (tf.global_variables_initializer(), tf.local_variables_initializer())+sess.run(init)

参考<报错FailedPreconditionError: Attempting to use uninitialized value X> <Attempting to use uninitialized value的解决方案>

9. 加载CIFAR10数据集出现的一些报错

CIFAR-10 数据集由 10 类 60000 张 32×3 2像素的彩色图片组成,每类有 6000 张图片。有 50000 张训练图片和 10000 张测试图片。常用于卷积神经网络-图片分类。

TFlearn库和Keras库中都含有cifar10.load_data()语句,用以加载CIFAR10数据集。两者的load_data()使用略有区别

(1) keras.datasets.cifar10.load_data()直接使用,不会报错。注意此load_data()无任何参数,若给参数则会报错。

import 

但每次使用keras加载cifar-10数据集的时候需要消耗很长时间,有时因为网络原因还不一定能加载成功~~解决办法是直接下载去官网下载好压缩包,下载下来的文件放到~/.keras/datasets/ 目录下,然后将文件名改名为cifar-10-batches-py.tar.gz, 再解压之。

再使用 (x_train, y_train), (x_test, y_test) = cifar10.load_data() 即可

(2) tflearn.datasets.cifar10.loaddata()的使用。注意此load_data()可不输入任何参数,也可输入dir_name或one_hot参数。

import tflearn.datasets.cifar10
(X,Y),(X_test,Y_test) = cifar10.load_data()

但在使用中,我发现通过keras来加载不会出错,但是通过tflearn加载则会报错,见下图:

No 

错误原因是从官网下载的数据集压缩文件是cifar-10-python.tar.gz,但是代码要求从cifar-10-batches-py中加载data_batch_N文件,而非从cifar-10-python中加载文件,所以报错说找不到该文件。解决办法是,手动下载cifar-10-python.tar.gz压缩包,解压,将其中文件全部放到另建的cifar-10-batches-py文件夹中,如下所示

注意这个压缩包要保留,不能删除,否则代码又将自动下载一遍。原因也是很好理解的

再使用以下语句即可。代码将从下面所给dirname接着寻找cifar-10-batches-pydata_batch_N

(

注意dirname只到CBIANCHENG_relevant_code文件夹,不到cifar-10-batches-py文件夹,并且压缩包要保留。原因自己思考一下就知道了

<wrong cifar-10-batches path>中所述解决办法正是如此。不过应该不需要两层cifar-10-batches-py文件夹,已验证过了

手动加载,并将路径参数传给load_data(),这种处理思想,同样是适用于MNIST等其他数据集的。

conda tensorflow_TensorFlow笔记1——补充附录(1) 机器学习相关库安装、使用中遇到的报错情况...相关推荐

  1. 机器学习模型保存之joblib、pckle报错问题

    机器学习模型保存之joblib.pckle报错问题 遇到的问题 joblib pickle加载 遇到的问题 使用sklearn训练机器学习模型时,为了能够使得训练好的模型可以多次使用,我们一般都会将模 ...

  2. conda安装python3.8虚拟环境报错

    问题描述: conda安装python3.8虚拟环境报错: CondaHTTPError: HTTP 000 CONNECTION FAILED for url <https://repo.an ...

  3. 【机器学习】function regularized_cost at 0x000001E9244B5A60>报错

    项目场景: 在进行机器学习代码练习时,出现了<function regularized_cost at 0x000001E9244B5A60>报错 问题描述 print 输出 regula ...

  4. anaconda 安装pytorch_安装PyTorch后,报错no module named #x27;conda#x27;的原因及解决办法

    本人首先下载了Anaconda,自带python版本为3.7.0.随后准备下载PyTorch的previous version(1.2.0),使用的是如下命令: conda install pytor ...

  5. 解决:在conda环境中“install getorganelle”出现Solving environment: failed with initial frozen solve. 的报错。

    GetOrganelle是建军和郁文彬老师开发的一款全新的细胞器基因组组装工具,此工具实现了大规模细胞器基因组的快速.准确的"自动化"安装.对于像我这样的初学小白来说,在使用这款工 ...

  6. 学习笔记:vsphere6 迁移物理机,指定被迁移的IP报错

    若Conversion软件安装在被迁移的计算机上,改选为local machine,防止帐号密码错误 本文转自谢育政 51CTO博客,原文链接:http://blog.51cto.com/kurolz ...

  7. 笔记:windows 2012 安装SQL 2008 群集报错

    http://blog.sina.com.cn/s/blog_3fa319f70101hc3z.html 现象: 在已安装群集服务并已群集MSDTC资源后,运行SQL2008R2群集添加向导时,在安装 ...

  8. mysql笔记(一):Navicat for MySQL远程连接mysql服务报错的解决方法(1130、2509)

    第一个报错: 错误代码是1130,ERROR 1130: Host X.X.X.X is not allowed to connect to this MySQL server 解决方法: 在服务器登 ...

  9. k8s 安装nfs_kubernetes挂载nfs报错 | 运维笔记

    版本描述: kubernetes 1.9.0 CentOS Linux release 7.2.1511 (Core) 问题描述: kubernetes挂载nfs发现发现pod一直处于containe ...

最新文章

  1. windows10 计算器无法打开(转)
  2. Spring访问数据库异常的处理方法(转)
  3. 函数式 vs 指令式
  4. map的生命周期 java,【JAVA面试的艺术】JAVA基础知识阶段三
  5. 外连接就是允许不满足条件的字段查询出来
  6. 深度 | 打败围棋冠军后,机器智能下一步能战胜黑客吗?
  7. 频繁使用花呗、借呗、微粒贷、京东白条会影响在银行的信用吗?
  8. 小议数据库主键选取策略(转自吕震宇老师博文)
  9. java对集合的操作_Java中对List集合的常用操作
  10. iOS之Cocoapods安装
  11. eNSP常用命令 华为模拟器eNSP常用命令
  12. 三线表里加小短线_三线表的规范格式
  13. ARM基础(5) ARM通讯接口
  14. charles对iOS手机的https进行抓包(图文教程)
  15. 可视化大屏模板|不玩虚的,套用立得报表
  16. 登陆拦截页面报错:localhost 将您重定向的次数过多。 尝试清除 Cookie. ERR_TOO_MANY_REDIRECTS
  17. 2018最新Java实战开发今日头条资讯网站
  18. SEO初学者如何正确选择SEO培训机构或老师
  19. Ps制作“端午节海报”总结
  20. 简易DDS信号发生器记录

热门文章

  1. 【redis】rediss指定地点安装报错 make: *** No rule to make target ‘xx/xxx/xx’ Stop.
  2. 循序渐进学运维-服务篇V1版更新完毕
  3. python实现图片加滤镜_Python 实现简单滤镜
  4. 【Linux】循序渐进学运维-服务篇-FTP服务配置文件详解
  5. 利用逆矩阵解线性方程组_资料 | 矩阵论简明教程
  6. 方差分析时,如何搞定方差分析、盒型图、显著性标记?——以Graphpad Prism 8.0为例
  7. VR线上虚拟展厅,为企业带来的优势:
  8. python123有监考功能吗_雨课堂考试监考是怎么监考的?监考功能介绍
  9. matlab测血压,有限长滤波器在血压测量中的运用
  10. 了解 CSS 网格:网格模板区域