论文复现
Posted yangdd
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了论文复现相关的知识,希望对你有一定的参考价值。
配置jdk
- 将下载下来的
jdk-8u241-linux-x64.tar.gz
进行解压
sudo tar zxvf ./jdk-8u241-linux-x64.tar.gz
- 设置环境变量
sudo vim /etc/profile
- 在其中添加:
#set Java environment
export JAVA_HOME=/home/ubuntu/jdk1.8.0_241
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
- 生效环境变量配置,命令行输入:
source /etc/profile
- 使用命令
java -version
检查Java是否已经安装在Ubuntu上
安装android studio以及配置sdk和adb
- 下载安装包https://www.androiddevtools.cn/
- 安装软件:解压压缩包,运行studio.sh脚本,完成剩下的安装。这个要在进入root模式之后进行:
sh /home/ubuntu/android-studio/bin/studio.sh
- 按照提示,一步一步安装。
- 之后会自动下载sdk文件,我的在/root/Android/Sdk下;
- 配置环境变量:
sudo vim /etc/profile
- 在其中添加:
export ANDROID_HOME=/root/Android/Sdk
export PATH=${PATH}:${ANDROID_HOME}/tools
export PATH=${PATH}:${ANDROID_HOME}/platform-tools
export PATH=${PATH}:${ANDROID_HOME}/build-tools
- 生效环境变量配置,命令行输入:
source /etc/profile
- 检查是否配置成功:
android -h
和adb
- 这里出现了问题
- 原来,在Android Studio官网的sdkmanager页面中,明确提到了在Android SDK Tools25.2.3及以后提供了sdkmanager command-line tools 以及舍弃android命令.
- 参考的解决方法
- 我这里选择下载了android-sdk_r24.4.1-linux.tar,然后解压,复制其中的tools目录,覆盖原来的tools目录。
- 然鹅还是不行。。。。算了先回复成原来的吧。。
安装KVM
- 执行以下命令以验证服务器的硬件是否支持虚拟化。如果输出结果大于 0,就意味着支持虚拟化。
egrep -c ‘(vmx|svm)‘ /proc/cpuinfo
- 在linux终端安装东西的时候都要
sudo apt-get update
一下,然后安装KVM依赖:
sudo apt-get install qemu-kvm
sudo apt-get install qemu
sudo apt-get install virt-manager
sudo apt-get install virt-viewer
sudo apt-get install libvirt-bin
sudo apt-get install bridge-utils
- 验证下,终端键入
kvm-ok
,出现下面的界面,就说明已经装好了
- 终端键入
sudo virt-manager
,可以进入图形界面。
配置aapt
aapt 为 Android Asset Packaging Tool , 在SDK的build-tools/目录下. 该工具可以查看, 创建, 更新ZIP格式的文档附件(zip, jar, apk). 也可将资源文件编译成二进制文件。
- 配置环境变量:
sudo vim /etc/profile
- 在其中添加:
# Add Android build-tools AAPT variable
export AAPT_HOME=/root/Android/Sdk/build-tools/29.0.3
export AAPT_HOME
export PATH=$PATH:$AAPT_HOME
- 生效环境变量配置,命令行输入:
source /etc/profile
- 使用命令
aapt
检查:
Add android-sdk/tools/lib
to LD_LIBRARY_PATH
.
- 在终端下输入
sudo vim /etc/profile
,添加
export LD_LIBRARY_PATH=/root/Android/Sdk/tools/lib:$LD_LIBRARY_PATH
- 生效环境变量配置,命令行输入:
source /etc/profile
- 然后再输入
echo $LD_LIBRARY_PATH
即会显示:
配置emulator
- 在配置abd环境的时候其实就已经配置好这个了,它在sdk目录下的tools文件目录下。
- 但是我发现这个命令只能在root权限下运行。。
遇到的问题
问题1
- 店家帮我装好了anaconda和pycharm,但是我打开pycharm的时候发现没有菜单栏,连settings都找不到。
- 解决方法:
- 按Ctrl + Shift + A打开“Action”对话框,键入“Experimental features”,然后按Enter键。
- 把linux.native.menu选项旁边的复选框的钩子去掉,变成空白选项,应用更改并关闭对话框。
- 重启PyCharm
问题2
- 使用
pip
安装需要的模块的时候,出现下面这样的问题:
you are using pip version 10.0.1,however version 20.0.2 is available
You should consider upgrading via the ‘pip install --upgrade pip’ command.
- 使用提示的更新命令:
pip install --upgrade pip --user
- 更新成功并可以安装所需模块:
- 在安装urllib3==1.9的时候出现了如下错误,但是最后显示还是安装成功了,不知道会不会对后续的实验有影响,先把图放在这里吧:
- 错误消息:
ERROR: requests 2.19.1 has requirement urllib3<1.24,>=1.21.1, but you‘ll have urllib3 1.9 which is incompatible.
- 在pycharm中添加conda的interpreter时候,出现如下问题:
- 错误信息:
/home/ubuntu/anaconda3/lib/python3.7/site-packages/requests/__init__.py:91: RequestsDependencyWarning: urllib3 (1.9) or chardet (3.0.4) doesn‘t match a supported version!
RequestsDependencyWarning)
- 解决办法:
pip install --upgrade urllib3
pip install --upgrade requests
-
后来又遇到下面问题,重新安装pycharm即可。
-
我发现在命令行使用命令
pip list
显示所安装好的包之后,在pycharm的解释器环境中找不到对应安装好的包,使用命令which python
查看ubuntu中安装的python路径,然后就可以找到在命令行安装好的包啦。
问题3
- 额。。,居然死机了,鼠标键盘都不动了。可能是我打开的窗口太多了。。
- 按
Ctrl + Alt + PrtSc (SysRq) + reisub
,再说明白一点,就是按住Ctrl,Alt和PtrSc(SysRq),按住他们的同时你需要按r,e,i,s,u,b 这样就能安全地重启linux
问题4
- 在配置完LD_LIBRARY_PATH之后,应该是这个环境变量配置错误,导致把PATH覆盖了(此时的我快崩溃了)
- 恢复办法如下:
/usr/bin/sudo vim /etc/profile (由于找不到sudo,所以必须写全路径,其他命令如果提示找不到,也需要写全路径)
- 在末尾加上:
export PATH="$PATH:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
- 执行以下命令生效
source /etc/profile
2020.5.1
-
今天打开测试运行环境,也也也太神奇了吧,上次这个
LD_LIBRARY_PATH
添加之后还不成功,今天打开居然检测成功啦!太开心了吧!就剩一个环境了!加油呀!
-
嗯嗯,今天什么都没解决。。。
2020.5.2
-
我卡在运行make_device.py这里了,怎么都运行不了,昨天那个的emulator64-x86也还是no,死机了。
-
make_device.py中的这句话:
p = pexpect.spawn(‘android create avd -n {} -t android-17 --snapshot‘
‘ --sdcard 200M --abi x86‘.format(sys.argv[1]), timeout=2)
- 其中
spawn()
方法用来执行一个程序,它返回这个程序的操作句柄,以后可以通过操作这个句柄来对这个程序进行操作。 - 命令
android create avd -n {} -t android-17 --snapshot --sdcard 200M --abi x86
参数 | 含义 |
---|---|
-n | AVD的名称(该项是必须的) |
-t | 运行的android的平台版本编号id |
--snapshot | 在AVD中设置一个快照文件 |
--sdcard | 新的sd卡的大小 |
--abi | 指定cpu架构 android list targe查看支持的cpu |
-
timeout=2
就指定超时时间 -
p
就是spawn()
的程序操作句柄了,之后对这个程序的所有操作都是基于这个句柄的,它可以说是最重要的部分。 -
我好像知道问题的原因了,因为这个Android sdk是在安装Android studio的时候自动安装的,不支持
android
命令。┭┮﹏┭┮ 好吧,我重新装一下。 -
先记录一下,这是目前为止配置的环境变量:
-
下载https://dl.google.com/android/repository/tools_r25.2.3-linux.zip,然后直接把文件拖进sdk文件,直接覆盖,解决啦哈哈哈哈!
2020.5.3
android
命令是可以执行。- 但是运行make_device.py还是老问题,总是说avdname的事情(还是对python不够熟悉)
- 还是make_device.py中的这句代码,发现运行的时候需要传参:
p = pexpect.spawn(‘android create avd -n {} -t android-17 --snapshot‘
‘ --sdcard 200M --abi x86‘.format(sys.argv[1]), timeout=2)
-
argv是一个list,它是sys模块下的一个全局变量(也称sys模块的属性),它的第一个元素是模块名、后面的元素是依次传入的参数!argv[1]代表第一个参数,这里是创建的avd的名字。
-
传参之后出现了如下错误:
-
查阅资料说是可能是权限的问题,然后
sudo su
进入root,再次执行python3 make_device.py
(这里我修改了一下代码不用传参) :
-
分析发现异常的原因是expect()语句超时,期望得到的结果没有得到,直到超时抛出异常。
-
查看已有的或新创建的AVD:
android list avd
-
运行指定的AVD:
emulator -avd AVD名
2020.5.4
- 出现pexpect.EOF异常错误、pexpect.TIMEOUT异常错误
- 查阅资料说这两个错误可以使用try语句来处理报错,于是我在def main()中进行了如下修改:
try:
……
except pexpect.EOF:
pass
except pexpect.TIMEOUT:
pass
- 是没有继续报错,查看创建的avd的时候并没创建成功。
- try这个关键字来捕获异常:
try:尝试执行的代码
except:出现错误的处理
-
所以上面的修改并没有实质性地解决问题。。。
-
发现其中有个错误是运行的android的平台版本编号id无效。
-
使用
android list targets
查询android版本编号,将代码中原来的17更改为29
-
更改后再次运行,发现如下问题:没有ABI,然后在命令行使用命令
android sdk
打开Android SDK Manager
,然后选择安装ABI,注意:下载时必须下载带有system image的项目,不然创建AVD时就会报如下的错误。参考
-
下载完成之后再次运行,又出现了问题。。。
-
查看了这篇文章,说是要添加前缀,就是下图红色框框中的:
-
添加之后可以运行啦!
-
运行的过程中会出现类似以下这样的问题,我就照着在相应的位置(运行卡住的模块后面)添加对应的模块,一共添加了如下九个模块(猜测可能是因为修改了android的平台版本编号导致)。
-
使用命令
android list avd
查看新创建的AVD,发现错误The following Android Virtual Devices could not be loaded
:
2020.5.5
-
查了好多资料,说这个问题的原因是Android Studio安装和Sdk的安装位置不在同一个盘符下面,还有就是ANDROID_AVD_HOME这个环境变量要是SDK目录,然后我修改了环境变量,整体的环境变量如下:
-
之后再次运行make_device.py,没抱希望的情况下,居然成功啦!老泪纵横o(╥﹏╥)o
-
不过马上又有了新的问题,执行命令
emulator -avd y
运行刚刚创建的avd:
-
参考这篇博客,将 /Android/ubuntu/Android/Sdksystem-imagesandroid-27google_apisx86 目录下的“kernel-ranchu-64” 文件改名为 “kernel-qemu”,然后重新 start 虚拟机
-
居然告诉我设备上没有空间。。。
-
累到没有骂人的力气。。
-
来看一下上面是warning:
emulator: WARNING: System image is writable
- 说明启动可写方式成功,但此时terminal处于等待状态,无法再进行操作,如果关闭当前terminal,打开的模拟器也会随之关闭。所以需要再重新打开一个terminal进行后续操作。
emulator: WARNING: Classic qemu does not support SMP. The hw.cpu.ncore option from your config file is ignored.
- 更新sdk tools,不过我更新之后还是不行
2020.5.30
- 没有 intel atom system image 这一项,刷新后也仍然没有:大概是连接不到官网更新的问题。
- SDK需要使用国内镜像地址更新,但是我把这里的镜像都试过了,都不行,后来开了一个代理,地址
127.0.0.1
,端口10809
。然后提权了一下居然可以了!!!感恩!!
运行程序
检查试验环境
参考文献
以上是关于论文复现的主要内容,如果未能解决你的问题,请参考以下文章
Vision Transformer(ViT)论文解读与代码复现(基于paddle框架)