科研初体验之Linux服务器的入门使用,关于分配了Linux账号之后怎么用,以及怎么利用Linux服务器来跑我们的python代码

news2024/11/21 1:35:05

前情提要

如果有人看了我之前发的乱七八糟的博客的话,应该就能了解到,我之前是计算机专业大三的学生,好不容易get到了保研的名额,前段时间就一直在操练LeetCode,到处报夏令营啊,预推免什么的,最后喜提中科院计算所的offer(我之前都不敢想的)。但是比较sad的一点就是,因为计算机太卷了,我自觉能力有限,全力维持绩点,偶尔跟同学参加两个小竞赛,去社团划划水就是全部了,实在是无暇顾及科研经历部分了,这也就导致了我在这方面纯纯就是一个小白,现在大四,计算所老师给了我们一个课题,这也是我第一次正经搞科研。于是,理所当然的,遇到了一大堆问题。。。

这里,我们就先讲一下关于Linux服务器相关的问题好了。

首先就是Linux服务器怎么用?

这个问题对于很多人来说是很蠢的,但是对于我的话,确实是我遇到的第一个门槛。我们课题要参考的一个平台是基于Linux系统的,所以,我们首先就是需要配置一个Linux环境,说起这个来,我第一时间想到的是Ubuntu虚拟机,不过后来看了一下我电脑的配置,这个虚拟机八成是配不好这个环境的(存储空间太小了,施展不开)。所幸,我们还有plan B,也就是Linux服务器了。

但是这个的使用我又确实不太会,我向师兄申请了Linux账号,师兄发来了IP地址,端口号,用户名和密码。我看着这些,第一时间想到的是把IP地址用浏览器登录了一下,发现是Nginx平台,别的基本啥也没看出来。。。

然后我就不清楚怎么操作了,甚至是把Nginx也下载了下来,不过后来才反应过来,好像用不着这个。(确实是好久没有碰相关的东西了,比较僵化),于是,我下载了xshell(我知道xftp是配套的,但是我当时确实不知道这个是什么东西,就没有下)。然后按照IP地址,端口号这些信息,终于是成功的登录上了我们组的Linux服务器。

登录之后的一些操作

这个部分的话,我一开始就是上网查到了最最基础的两个指令:
rz:把文件上传进服务器
ls:查看当前目录
后来的话就是vim,cat,chmod这些各种不同功能的指令了。

在这一步,我们已经可以说是非常非常基础的能用上我们的Linux服务器了至少。那么接下来,我的目标就是利用Linux服务器,来执行我的python文件,进而慢慢的做到执行整个项目的部分。

如何执行python文件

这里我一开始想的是类似我们在Windows里面命令行的操作那样,直接把文件名输入就可以了,结果:
在这里插入图片描述
所以还是需要一些指令的,不过我一开始没明白,就开始上网搜,有些人说是在python文件的第一行输入!/usr/bin/python之类的一个路径,不过经过实测,完全不行。包括有些人说是要调整那个chmod +xxx的权限问题,也试了一下,差点惊动管理员(-_-||)。

最后搜到的一个比较靠谱的方案就是python +文件名。实测有效。
在这里插入图片描述
当然了,这个是基于我们这个服务器是之前有python环境的。如果是裸Linux的话,应该还是得先从python下起的,这个先不谈。

如何执行深度学习相关的python文件

就像之前的操作中,我能通过指令方式直接执行python文件了,但是那也只是最最基本的python代码罢了,对于深度学习相关的内容来说,他们的module需求才是我们需要着重考虑的。如果我们按照之前的操作,直接执行一个深度学习的python文件的话,就会:在这里插入图片描述
可以看到,我们这里是缺包的,所以我们首先需要做的就是在Linux服务器上重新构造一个python深度学习的环境。

所以,我首先下载了anaconda:
在这里插入图片描述
并提供权限进行了安装:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

最后的话,他是通知我已经安装好了,不过环境变量也是因为Linux服务器的原因,默认是不能设置的。这里是按照他的要求,执行了conda init指令。

如果我们不进行init指令的话,对于conda -V这种类型的指令他们就是识别不出来。而在我们init完成之后,我们重新打开xshell,他应该是这个样子了:
在这里插入图片描述
也就是左边出现了(base)的标志,就说明init成功了。

接下来就是按照我们的需求,创建一个python环境,我这里是3.6的环境就可以了。设置好之后,输入conda env list就可以查看到目前的环境列表。接下来直接激活它就可以了,激活的指令为:conda activate [环境名字],之后我们可以看到左边标志的变化,说明改动成功。

但是,这样之后,不知道为什么,我还是没有成功执行,还是缺少module。于是决定缺啥补啥,少Keras我就pip install tensorflow。
在这里插入图片描述
这个过程的话,不知道是不是学校网络的原因,下载过程特别慢,大概用了小三个小时吧,才完成下载,最后应该是下图状态:

在这里插入图片描述
这时,我们再来执行之前的深度学习的python文件:
在这里插入图片描述
在这里插入图片描述
这里输出的有一些又多又杂了,总体来说的话就是,我们的python文件完成了深度学习并且每一步都有结果输出。不过美中不足的就是我们绘制图像部分没有能够出图片,不过也可以理解。毕竟服务器弹出个图片来,多少有点不严肃了。

另外补充一下,就是中间又报出了缺少matplotlib的包,也是直接pip install就可以,这个很小也很快。然后就没问题了。

至于代码,这个就是之前python深度学习中最开始的那个判断电影评论是正向还是负面的二分类问题。代码部分的话也附在这里吧,大家可以自己试一下:(前五行代码也是搜的用来解决这个文件执行问题的方法,不过没有用,可以不管)

import os

import sys

curPath = os.path.abspath(os.path.dirname(__file__))

rootPath = os.path.split(curPath)[0]

sys.path.append(rootPath)

# 加载IMDB数据集,并且只保留前一万个最常出现的单词,低频单词被舍弃,这样确保向量数据不会太太大。

import  keras

from keras.datasets import imdb
(train_data,train_labels),(test_data,test_labels)=imdb.load_data(num_words=10000)

# 这里的data就是评论单词索引的列表,label就是评论的正负向
print(train_data[0])
print(train_labels[0])

# 因为只要了前一万个常用的单词,所以他们对应的索引编号不应该超过一万
print(max([max(sequence) for sequence in train_data]))

# 但是看一串数字多没意思啊,我们还得能转换回评论语句来
word_index=imdb.get_word_index()
reverse_word_index=dict([(value,key) for (key,value) in word_index.items()])
decoded_review=' '.join([reverse_word_index.get(i-3,'\n') for i in train_data[0]])
print(decoded_review)

# 我们现在有了数据集,但是我们不可能直接输入神经网络的,我们还需要将列表转化成张量
import numpy as np

# 这个函数的功能就是做了一个二维表,将每一个语句对应索引位置置1
def vectorsize_sequence(sequences,dimension=10000):
    results=np.zeros((len(sequences),dimension))
    for i,sequence in enumerate(sequences):
        results[i,sequence]=1
    return results

# 这里我们可以看到样本成了这个样子
x_train=vectorsize_sequence(train_data)
x_test=vectorsize_sequence(test_data)

print(x_train[0])

# 但是label相对就好处理很多
y_train=np.asarray(train_labels).astype('float32')
y_test=np.asarray(test_labels).astype('float32')

print(y_train[0])

# 开始构建网络
from keras import models
from keras import layers

# 我知道你很急,但是你先别急
# 我们现在只要相信他们给出的网络就可以
model=models.Sequential()
model.add(layers.Dense(16,activation='relu',input_shape=(10000,)))
model.add(layers.Dense(16,activation='relu'))
model.add(layers.Dense(1,activation='sigmoid'))

# 模型架构就是这样了,简单设置了一下优化器,损失函数和指标
model.compile(optimizer='rmsprop',loss='binary_crossentropy',metrics=['accuracy'])

# 这里是为了把之前整个的数据分开,一部分做训练集,一部分做验证集,训练验证分开是为了防止过拟合导致结果失真
x_val=x_train[:10000]
partial_x_train=x_train[10000:]

y_val=y_train[:10000]
partial_y_train=y_train[10000:]

# 开始训练,512个样本为小批量,连上20次,fit函数会返回一个history对象,内有全部训练过程的数据。
history=model.fit(partial_x_train,partial_y_train,epochs=4,batch_size=512,validation_data=(x_val,y_val))
history_dict=history.history
print(history_dict)

# 现在我们可以绘制出来训练过程的效果如何
import matplotlib.pyplot as plt

# 绘制训练损失和验证损失
loss_value=history_dict['loss']
val_loss_value=history_dict['val_loss']
epochs=range(1,len(loss_value)+1)

plt.plot(epochs,loss_value,'bo',label='Training loss')
plt.plot(epochs,val_loss_value,'b',label='Validation loss')
plt.title('Training and Validation loss')
plt.xlabel('Epochs')
plt.ylabel('Loss')
plt.legend()

plt.show()

# 同理,绘制训练精度和验证精度
plt.clf()
accy=history_dict['accuracy']
val_accy=history_dict['val_accuracy']
plt.plot(epochs,accy,'bo',label='Training acc')
plt.plot(epochs,val_accy,'b',label='Validation acc')
plt.title('Training and Validation accuracy')
plt.xlabel('Epochs')
plt.ylabel('acc')
plt.legend()

plt.show()

# 如果你认真看了这两个图片,就会发现很奇怪的事情,随着我们训练轮次的增加,似乎训练集精度的提高反而带来了验证集损失的增加和精度的下降
# 这就是过拟合,训练轮子太多,导致学习到了训练集本身的属性

result=model.evaluate(x_test,y_test)
print(result)

print(model.predict(x_test))

最后补充一下xftp好了

xftp的功能其实是和Rz,rm指令类似,rz,rm可以指定文件上传和删除,而xftp的作用我目前来看的话就是把这个部分的功能可视化了一下。(虽然我觉得应该不只,但是目前用到的就这个)
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/220.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

应该了解的网络知识

今天上午10:00参加了一个新华三杯,是关于计算机网络的,100道题,发现没有一道是自己会的,好歹也是学过一学期的计算机网络,到头来发现啥也不会,然后现在就又去复习一下网络。 OSI七层模型 *应用层…

VUE | “面包屑”的原理

最近我在写一个“项目”?遇到了以前没有接触到的一个知识点——“面包屑”。 写下来,我所理解的思路,一是为了看能不能帮助到大家,二是自己肯定不是已经完全理解、印在脑子里了,所以方便自己随时复习~ 我们先来看一下…

自动化测试项目学习笔记(五):Pytest结合allure生成测试报告以及重构项目

相关文章 [ >.<] 自动化测试项目学习笔记(一)&#xff1a;unittest简单运行&#xff08;初始化&#xff0c;清除&#xff0c;设置测试行为&#xff09;[ >.<] 自动化测试项目学习笔记(二)&#xff1a;学习各种setup、tearDown、断言方法[ >.<] 自动化测试项…

启发式算法之蚁群算法

&#x1f63b;今天我们来学习启发式算法中的蚁群算法&#xff0c;据说&#xff0c;蚁群算法是路径规划算法中’最好’的群智能算法。快让我们开始吧&#xff01; 目录1. 蚁群算法基本介绍1.1 算法简介1.2 算法原理2.蚁群算法的基本流程2.1 路径构建2.2 蚂蚁信息素的更新3. scik…

使用POI和EasyExcel实现Excel导入和导出功能

需求场景 开发中经常会设计到excel的处理&#xff0c;需求场景如下所示&#xff1a; 1、将用户信息导出为excel表格&#xff08;导出数据&#xff09; 2、将Excel表中的信息录入到数据库中&#xff08;导入数据&#xff09; 操作Excel目前比较流行的就是 Apache POI 和 阿里…

单片机通过WIFI模块(ESP8266)获取网络时间与天气预报

前几天发布了开源4.3寸触摸屏的文章 《开源4.3寸触摸屏》&#xff0c;里面有WIFI获取时间和天气预报相关的功能&#xff0c;今天就来介绍一下这个功能是怎样实现的。 1.底层驱动 首先&#xff0c;硬件上&#xff0c;单片机通过串口AT指令访问WIFI模块&#xff08;ESP12S&#x…

有营养的算法笔记(七)

字符串消除 1.题目描述 给定一个只由’a’和’b’组成的字符串str&#xff0c;str中"ab"和"ba"子串都可以消除&#xff0c; 消除之后剩下字符会重新靠在一起&#xff0c;继续出现可以消除的子串…你的任务是决定一种消除的顺序&#xff0c;最后让str消除到…

(附源码)计算机毕业设计SSM基于人脸识别和测温的宿舍管理系统

&#xff08;附源码&#xff09;计算机毕业设计SSM基于人脸识别和测温的宿舍管理系统 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09…

Redis 集群安装-Centos

Redis 集群安装-Centos Redis3.0以后的版本虽然有了集群功能&#xff0c;提供了比之前版本的哨兵模式更高的性能与可用性&#xff0c;但是集群的水平扩展却比较麻烦&#xff0c;今天就来带大家看看redis高可用集群如何做水平扩展&#xff0c;原始集群(见下图)由6个节点组成&am…

【图灵MySQL】MySQL索引优化实战(上)

【图灵MySQL】MySQL索引优化实战&#xff08;上&#xff09; 数据准备-SQL CREATE TABLE employees (id int(11) NOT NULL AUTO_INCREMENT,name varchar(24) NOT NULL DEFAULT COMMENT 姓名,age int(11) NOT NULL DEFAULT 0 COMMENT 年龄,position varchar(20) NOT NULL DEF…

1024程序员节带你玩转图片Exif信息获取之JavaScript

目录 一、前言 二、背景 三、Exif.js 1、Exif.js 简介 2、Exif.js 引入 四、多场景展示数据获取 1、原始图片直接获取 2、base64 编码文件加载 3、文件上传的方式加载 五、总结 一、前言 1024是2的十次方&#xff0c;二进制计数的基本计量单位之一。1G1024M&#xff0c;而…

git工具基本操作命令

初始化 首先在某个文件下新建一个项目。然后使用git初始化命令开始正式管理写好的代码。 首先新建一个项目&#xff1a; 然后在上述文件夹中右键选择git&#xff0c;或者直接在该文件路径下打开cmd进行操作&#xff1a; 上述操作出现了.git文件夹&#xff0c;今后所有的操作都…

Sharding-JDBC实现读写分离

前言 快一个月没有更新文章了&#xff0c;太忙了太忙了&#xff0c;虽然慢了一点&#xff0c;但是我肯定不会断更。上一篇文章是《Mysql主从复制》&#xff0c;光是数据库层面的主从复制可不行&#xff0c;应用层面也是需要读写分离的&#xff0c;所以接上一篇文章我们来讲如何…

赶紧进来看看---万字博客详解C/C++中的动态内存管理

本篇博客主要介绍了C/C程序内部的内存开辟.动态内存分布 动态内存函数malloc calloc realloc free的使用 常见的动态内存错误.以及柔性数组的概念与使用 学会动态内存管理将不再局限于使用静态的空间,对内存空间的理解和使用将更进一层楼~ C/C动态内存管理一.认识C/C程序的内存…

【C++升级之路】类与对象(中)

&#x1f31f;hello&#xff0c;各位读者大大们你们好呀&#x1f31f; &#x1f36d;&#x1f36d;系列专栏&#xff1a;【C学习与应用】 ✒️✒️本篇内容&#xff1a;类与对象知识汇总&#xff0c;包括6大默认成员函数、日期类的实现 &#x1f6a2;&#x1f6a2;作者简介&…

graphQL入门分享

是什么 一种用于 API 的查询语言&#xff1b;它与特定技术无关&#xff0c;你可以用任何语言实现它 简单理解&#xff0c;他能提供一个接口&#xff0c;让我们来调用&#xff0c;只是返回的数据格式更多是由我们前端来控制 为什么 官网&#xff1a;https://graphql.cn/ 1.请求你…

深入理解计算机系统前篇总结

&#x1f343;博主昵称&#xff1a;一拳必胜客 博主主页面链接&#xff1a;博主主页传送门 博主专栏页面连接&#xff1a;专栏传送门–计算机考研 &#x1f351;创作初心&#xff1a;本博客的初心是每天分享记录自己学习的脚步&#xff0c;和各位技术友探讨交流&#xff0c;同时…

惠州龙门大米飘香 国稻种芯-中国水稻节:广东乡村振兴样板

惠州龙门大米飘香 国稻种芯-中国水稻节&#xff1a;广东乡村振兴样板 人民日报客户端 新闻中国采编网 中国新闻采编网 谋定研究中国智库网 中国农民丰收节国际贸易促进会 国稻种芯中国水稻节 中国三农智库网-功能性农业农业大健康大会报道&#xff1a; 粒粒“龙门大米”精美飘…

百度地图API的使用(附案例)

文章目录JavaScript API GL一、申请秘钥Hello World显示地址案例定位功能步行导航搜索功能地铁路线规划JavaScript API GL 百度地图JavaScript API是一套由JavaScript语言编写的应用程序接口&#xff0c;可帮助您在网站中构建功能丰富、交互性强的地图应用&#xff0c;支持PC端…

经典文献阅读之--用于自动驾驶的高清地图生成技术

0. 简介 这篇文章我们介绍一下论文“High-Definition Map Generation Technologies For Autonomous Driving: A Review“&#xff0c;2022年6月11日&#xff0c;来自加拿大Ontario Tech University。相较于网上的其他文章&#xff0c;本文更在意向读者更轻松全面的了解文章中介…