前情提要

如果有人看了我之前发的乱七八糟的博客的话,应该就能了解到,我之前是计算机专业大三的学生,好不容易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 osimport syscurPath = os.path.abspath(os.path.dirname(__file__))rootPath = os.path.split(curPath)[0]sys.path.append(rootPath)# 加载IMDB数据集,并且只保留前一万个最常出现的单词,低频单词被舍弃,这样确保向量数据不会太太大。import  kerasfrom 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]=1return 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的作用我目前来看的话就是把这个部分的功能可视化了一下。(虽然我觉得应该不只,但是目前用到的就这个)

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

  1. 黄聪:C#代码生成工具:文本模板初体验 Hello,World!

    C#代码生成工具:文本模板初体验 Hello World 在VS中的文本模板(也称T4),它给我有点CodeSmith的感觉,也是通过模板加逻辑代码混编批量生成代码的方法,但是关于T4的资料不多,而且 ...

  2. 风变编程有c语言吗,风变编程Python小课初体验:用有趣好玩的方式学编程

    原标题:风变编程Python小课初体验:用有趣好玩的方式学编程 经过约一个月时间的学习,今天,我终于学完风变编程Python小课的Python基础语法课程啦!从零基础的"小白"到现 ...

  3. linux内核二当家,Linux PWN从入门到熟练(二)

    前言 上回说到,如何利用程序中system函数以及bin/sh字符串来进行pwn.这里我们会介绍,如何在栈可执行而system函数以及参数没有的情况下,如何自己布置payload进行pwn.此外,还提 ...

  4. arm嵌入式linux应用实例开发pdf,零点起步——ARM嵌入式Linux应用开发入门一书的源代码...

    代码片段和文件信息 属性            大小     日期    时间   名称 ----------- ---------  ---------- -----  ---- 文件      2 ...

  5. 堡垒机初体验——JumpServer

    初体验 JumpServer是全球首款完全开源的堡垒机,符合4A规范的安全运维审计系统,并且基于Python/Django进行开发,拥有较好的Web Terminal页面.JumpServer是飞致云 ...

  6. 华为云服务器入门初体验

    文章目录 0x00 文章内容 0x01 领取试用服务器 1. 领取服务器 2. 下订单 0x02 服务器初体验 1. 登录服务器 0xFF 总结 0x00 文章内容 领取试用服务器 服务器初体验 0x ...

  7. 服务器与Linux初体验

    服务器硬件知识 1.服务器概述: 电源 电源相当于人体的心脏,需保障电力供应,如果要买服务器,应选择质量好一点的电源. 另外需要注意的是,在实际使用场景中,如果只是配置一个服务器负责核心业务,那么最好 ...

  8. 云起实验室有奖征文,精美好礼等你来领——《我的linux初体验》

    简介:云起实验室面向开发者提供免费云产品资源.沉浸式体验环境.手把手操作手册,帮助开发者实现上云第一站,快速学习了解云计算及云产品. 今年七月份,社区平台全面升级,特别推出"乘风者计划&qu ...

  9. SQL On Linux 初体验

    SQL On Linux初体验 备注:Blog具有时效性, 内容随着更新会发现变化,时间是2017年5月22日 SQL On Linux版本很快就会正式发布,本文进行了安装和常用的操作,感受还不错,废 ...

最新文章

  1. zookeeper版本更新_Zookeeper归纳
  2. 计算机应用试卷分析讲评课教案,数学试卷讲评课教案.doc
  3. 5107LiveChatCode
  4. 阿里云+wordpress搭建个人博客网站【小白专用的图文教程】
  5. linux应用程序开发数据,《嵌入式linux应用程序开发详解》核心笔记
  6. ZOJ3370. Radio Waves(2-sat)
  7. SynchronizationContext
  8. 代码补全_补全股票代码位数的一百种姿势
  9. javascript 函数的变量与作用域
  10. 用QT制作一个抽奖器的总结
  11. 用qt建立自定义对话框的方法,含vc2015 vc版本中使用
  12. ubuntu 20.04 firefox视频打不开问题
  13. Java虚拟机的类加载机制
  14. 一个简单的c++文本加密
  15. 实验8人机交互页面的创新设计
  16. 《CRAFT:Character Region Awareness for Text Detection》论文笔记
  17. 手把手教你用移远M26/BC28的 MQTT协议 对接阿里云IoT平台
  18. 用style标签的background-image属性 改变图片大小
  19. 浅谈计算机硬件维护 论文,论文浅谈计算机硬件维护.pdf
  20. Home Inventory for Mac(家庭资产管理软件)

热门文章

  1. Oracle 自定义类型TYPE(subtype, type object, type body, type table) 用法
  2. Vue 3 迁移策略笔记—— 第2节:Async Components 异步组件
  3. 下面程序的输出结果是( )
  4. python 使用 selenium 爬虫知乎
  5. labview 移位寄存器、隧道、索引隧道的区别
  6. ESP32上手笔记 | 04 -通过MQTT对接腾讯云IoT Explorer物联网平台(PubSubClient)
  7. 这个技术的出现,可能会颠覆阿里云、AWS!
  8. 24种设计模式及其应用场景
  9. doxygen教程-4-快速上手配置文件
  10. react中解决下拉时,多个tooltip包裹的列表中,hover时,tooltip快速触发,闪烁问题