汽车修理工,转行程序员,成功逆袭月薪1W+

人工智能81

前言

今天,我想和大家分享我的转行故事,希望能鼓励那些像我一样的朋友们一起前进。

[En]

Today, I would like to share with you the story of my career change, hoping to encourage those friends like me to move forward together.

首先说说为何要转型,我之前的专业是 汽车检测与维修,毕业后进入维修工作,后来换了两份工作,其实都基本没有离开过汽车行业这个圈子。

而实际上, 汽车行业这个圈子并不是我的理想工作,不管是工作时长 工作前景,工作的付出和收入是否成正比的角度来看,都证明这不是我想要的,只是我人生的过渡阶段。

我自己对汽修又不是很感兴趣,正是因为如此,所以综合考虑和充分了解后, 我决定进入IT行业

因为当时没有计算机基础,我走了很多弯路,在网上找了一些教程,东拼西凑,感觉一团糟。如果你想转型,你就得有所付出。

[En]

Because there was no computer foundation at that time, I took a lot of detours, searched some tutorials on the Internet, cobbled together, and felt in a mess. If you want to make a transition, you have to give something.

在此期间,我还会见了研究组中一些年轻的数据分析职位的现任者。他建议我做数据分析。

[En]

During that time, I also met some incumbents in the study group who were young in the position of data analysis. He suggested that I do data analysis.

下面是我给大家的一些学习方针:

1.我发现很多学习Python的人不明白一个东西,就是我们在做一件事的时候首先弄清楚这个事情是干什么的,应该怎么做。就像有些人写代码做程序一样,刚有了需求,直接动手干,完全不去想思路和细节,如果你能把每个细节做到位,写代码真的很简单。所以初学者一定知道自己在学什么,而不是整体在那里盲目的学,浪费时间。

2.系统的学习规划,学习Python是一个循序渐进的过程,不是今天学一会,明天多学一会,这样一定学不成功,最后的结果就是浪费时间,浪费生命,这都是走过来的路,经验。

汽车修理工,转行程序员,成功逆袭月薪1W+

3.有人指导,学Python千万别自以为是的认为自己很天赋异禀,只要努力就一定能成功,很多东西我们现有智商无法满足的,所以学Python开始一定要有人帮你解决一些小问题,很多难题自己是无法解决,就算解决也很浪费时间,所以我把大家都聚在了一块希望帮助每一个想学习改变自己的人。

4.只需要一套系统的学习教程,学习资料不在多,再多可能你都不会看,没用,能耐心的学完,每天都在学,这才是有用的东西,没有学习资源的朋友可以自己去下载。

5.学习方法,学习Python是需要一个少走弯路的学习方法的,如果学习方法不对,那怎么学都是浪费时间,多去跟过来人请教,交流的碰撞,可以让你少走很多弯路,如果大家没人可以问,可以随时来问我,平时我工作不忙的时候,都会在群里给大家解决问题。

学习这件事最终还是自己的事,无论在哪里学都差不多,最后还是自己心里怎么对待,有人帮助必然会快,但其他的一切东西都是辅助,有再好的条件都有学不好的,在恶劣的环境都有学好的。如果想在Python这条路走的长,那你一定要热爱技术,热爱互联网。

要注重实践,眼到手也到,才更完美

相信很多初学者都会有这样的感觉,就是学习的时候,觉得自己能听懂,但真的,做的时候,觉得不会到处绊倒。

[En]

I believe that many beginners will have this feeling, that is, when they study, they feel that they can understand, but really, when they do it, they feel that they will not stumble here and there.

其实,学习一门新知识、理解一门知识,只是第一步,最重要的是实际操作,等实际操作了解得更到位后,印象也才能更深刻。千万不要眼高手低,也不要为了速度而忽视一些代码编写。

[En]

In fact, to learn a new knowledge, understand, is only the first step, the most important thing is the actual operation, after the actual operation can be understood more in place, the impression can also be more profound. Never set your sights high and your skills low, and don't ignore some code writing for the sake of speed.

; 说说现在的我

在浙江宁波工作,然后进入互联网企业进行数据分析工作,月薪也从原先的4k提升到12k,更好的环境、更高的薪资,让我对未来的进阶学习也充满了向往

其实工作挺好找的,面试的时候, 把一些经常面的题多复习一下,注意不要花太长时间。每面完一家,先网上搜索该题的答案,讲解,下次遇到这样的题,就能很快知了。

工作中,一定要多问同事, 遇到不懂的,多请教,直到能找到问题的解决办法,能完成上面布置的任务才是硬道理。还有平时有时间,可以多看看书,书里的内容比较系统,从最简单的开始看,慢慢会有深的体会的。

最后,想跟学弟学妹说一声, 选择比努力重要,你的努力不会被辜负,好的工作机会也会在前方等着你!

最后

在这里要与大家分享的书籍是《Python 数据分析基础教程:NumPy 学习指南(第 2 版)》,根据小编多年python开发经验,这本书是零基础入门数据分析首选佳作,需要的朋友可以微信扫描下方二维码免费领取。
汽车修理工,转行程序员,成功逆袭月薪1W+

; 第1章 NumPy快速入门

  • Python
  • 动手实践:在不同的操作系统上安装 Python
  • Windows
  • 动手实践:在 Windows 上安装 NumPy、Matplotlib、 SciPy 和 IPython
  • Linux
  • 动手实践:在 Linux 上安装 NumPy、Matplotlib、SciPy 和 IPython
  • ...

汽车修理工,转行程序员,成功逆袭月薪1W+

第2章 NumPy基础

  • NumPy 数组对象
  • 动手实践:创建多维数组
  • 动手实践:创建自定义数据类型
  • 一维数组的索引和切片
  • 动手实践:多维数组的切片和索引
  • ...

汽车修理工,转行程序员,成功逆袭月薪1W+

; 第3章 常用函数

  • 文件读写
  • 动手实践:读写文件
  • CSV 文件
  • 动手实践:读入 CSV
  • 成交量加权平均价格(VWAP)
  • ...

汽车修理工,转行程序员,成功逆袭月薪1W+

第4章 便捷函数

  • 相关性
  • 动手实践:股票相关性分析
  • 动手实践:多项式拟合
  • 净额成交量
  • 动手实践:计算 OBV
  • ...

汽车修理工,转行程序员,成功逆袭月薪1W+

; 第5章 矩阵和通用函数

  • 矩阵
  • 动手实践:创建矩阵
  • 从已有矩阵创建新矩阵
  • 动手实践:从已有矩阵创建新矩阵
  • 通用函数
  • 动手实践:创建通用函数
  • ...

汽车修理工,转行程序员,成功逆袭月薪1W+

第6章 深入学习NumPy模块

  • 线性代数
  • 动手实践:计算逆矩阵
  • 求解线性方程组
  • 动手实践:求解线性方程组
  • 特征值和特征向量
  • 动手实践:求解特征值和特征向量
  • ...

汽车修理工,转行程序员,成功逆袭月薪1W+

; 第7章 专用函数

  • 排序
  • 动手实践:按字典序排序
  • 复数
  • 动手实践:对复数进行排序
  • 搜索
  • 动手实践:使用 searchsorted 函数
  • ...

汽车修理工,转行程序员,成功逆袭月薪1W+

第8章 质量控制

  • 断言函数
  • 动手实践:使用 assert_almost_equal 断言近似相等
  • 近似相等
  • 动手实践:使用 assert_approx_equal 断言近似相等
  • 数组近似相等
  • 动手实践:断言数组近似相等
  • ...

汽车修理工,转行程序员,成功逆袭月薪1W+

; 第9章 使用Matplotlib绘图

  • 简单绘图
  • 动手实践:绘制多项式函数
  • 格式字符串
  • 动手实践:绘制多项式函数及其导函数
  • 子图
  • 动手实践:绘制多项式函数及其导函数
  • ...

汽车修理工,转行程序员,成功逆袭月薪1W+

第10章 NumPy的扩展:SciPy

  • MATLAB 和 Octave
  • 动手实践:保存和加载.mat 文件
  • 统计
  • 动手实践:分析随机数
  • 样本比对和 SciKits
  • 动手实践:比较股票对数收益率
  • 信号处理
  • ...

汽车修理工,转行程序员,成功逆袭月薪1W+

; 第11章 玩转Pygame

  • Pygame
  • 动手实践:安装 Pygame
  • Hello World
  • 动手实践:制作简单游戏
  • 动画
  • 动手实践:使用 NumPy 和 Pygame 制作动画对象
  • ...

汽车修理工,转行程序员,成功逆袭月薪1W+

因为篇幅有限,这里就不一一展示了,需要《Python 数据分析基础教程:NumPy 学习指南(第 2 版)》PDF的小伙伴,可以微信扫描下方二维码免费领取!

汽车修理工,转行程序员,成功逆袭月薪1W+

Original: https://blog.csdn.net/xiangxueQAQ/article/details/123020621
Author: 凯岩城永不陷落
Title: 汽车修理工,转行程序员,成功逆袭月薪1W+



相关阅读

Title: 图像分类篇——AlexNet详解

一、概述

AlexNet是由2012年ImageNet竞赛参赛者Hinton和他的学生Alex Krizhevsky设计的。AlexNet在当年赢得了ImageNet图像分类竞赛的冠军,使得CNN成为图像分类问题的核心算法模型,同时引发了神经网络的应用热潮。
1. AlexNet的创新
作为具有历史意义的网络结构,AlexNet包含以下方面的创新。
(1)非线性激活函数 ReLU
在AlexNet出现之前,sigmoid是最为常用的非线性激活函数。sigmoid函数能够把输入的连续实值压缩到0和1之间。但是,它的缺点也非常明显:当输入值非常大或者非常小的时候会出现饱和现象,即这些神经元的梯度接近0,因此存在梯度消失问题。为了解决这个问题,AlexNet使用ReLU作为激活函数。
ReLU函数的表达式为F(x)=max(0,z)。若输入小于0,那么输出为0;若输入大于0,那么输出等于输入。由于导数始终是1,会使得计算量有所减少,且AlexNet的作者在实验中证明了,ReLU 函数的收敛速度要比sigmoid 函数和 tanh函数快。
(2)局部响应归一化
局部响应归一化(local response normalization,LRN)的思想来源于生物学中的"侧抑制",是指被激活的神经元抑制相邻的神经元。采用LRN的目的是,将数据分布调整到合理的范围内,便于计算处理,从而提高泛化能力。虽然ReLu函数对较大的值也有很好的处理效果,但AlexNet的作者仍然采用了LRN的方式。式3.7是Hinton在有关AlexNet的论文中给出的局部响应归一化公式。

汽车修理工,转行程序员,成功逆袭月薪1W+

a表示第i个卷积核在(x,y)处经卷积、池化、ReLU函数计算后的输出,相当于该卷积核提取的局部特征。N表示这一层的卷积核总数;n表示在同一位置的临近卷积核的个数,是预先设定的;k、alpha、beta均为超参数。假设N=20,超参数和n按照论文中的设定,分别为k=2、alpha=10-4、beta=0.75、n=5。第5个卷积核在(x,y)处提取了特征,的作用就是以第5个卷积核为中心,选取前后各5/2=2个(取整,因此n所指个数包含中心卷积核)卷积核,因此有max=3和min=7,卷积核个数就是3、4、5、6、7。
通过分析公式,我们对局部响应归一化的理解会进一步加深。式3.7的存在,使得每个局部特征最后都会被缩小(只是缩小的比例不同),相当于进行了范围控制。一旦在某个卷积核周围提取的特征比它自己提取的特征的值大,那么该卷积核提取的特征就会被缩小。相反,如果在该卷积核周围提取的特征比它自己提取的特征的值小,那么该卷积核提取的特征被缩小的比例就会变小,最终的值与周围的卷积核提取的特征值相比就显得比较大了。
(3) dropout
        dropout通过设置好的概率随机将某个隐藏层神经元的输出设置为0,因此这个神经元将不参与前向传播和反向传播,在下一次迭代中会根据概率重新将某个神经元的输出置0。这样一来,在每次迭代中都能够尝试不同的网络结构,通过组合多个模型的方式有效地减少过拟合。
(4)多GPU训练
        单个GPU的内存限制了网络的训练规模。采用多GPU协同训练,可以大大提高AlexNet的训练速度。

二、AlexNet的结构

下面介绍AlexNet的结构。如图所示,由于采用双GPU协同训练,该网络结构图分为上下两部分,且两个GPU只在特定的层内通信。该模型一共分为8层,包括5个卷积层和3个全连接层,每个卷积层都包含激活函数ReLU、池化和LRN处理。

汽车修理工,转行程序员,成功逆袭月薪1W+

AlexNet架构 层类型特征图大小内核步幅填充激活OUT全连接-1000---ReLUF10全连接-4096---ReLUF9全连接-4096---ReLUs8最大池化25666332valid-C7卷积2561313551sameReLUC6卷积3841313551sameReLUC5卷积3841313551sameReLUS4最大池化2561313332valid-C3卷积2562727551sameReLUS2最大池化962727332valid-C1卷积96555511114validReLUIn输入3(RGB)227*227----

(1)Layer1卷积层
该层接收227×227×3(R、G、B三个通道)的输入图像,使用96个大小为11×11×3的卷积核进行特征提取,步长为1,扩充值为0,通过式3.1可以得到输出特征图的尺寸。由于使用了双GPU,图3.13中的每个GPU处理的卷积核的数量均为48个。卷积后,得到大小为55×55×96的特征图。
对得到的特征图,使用ReLU函数将它的值限定在合适的范围内,然后使用3×3的滤波器进行步长为2的池化操作,得到27×27×96的特征图。最后,进行归一化处理,规模不变。
(2)Layer 2卷积层
Layer 2与Layer 1相似,它接收Layer 1输出的27×27×96的特征图,采用256个5×5×96的卷积核,步长为1,扩充值为2,边缘用0填充,生成27×27×256的特征图。紧随其后的是与Layer 1相同的ReLU函数和池化操作,最后进行归一化处理。
(3) Layer3卷积层与Layer 4卷积层
Layer3和Layer4也采用了卷积层,但只进行卷积和ReLU。不进行池化和归一化操作。Layer3的每个GPU都有192个卷积核,每个卷积核的尺寸是3×3×256.步长为1,扩充值为1,边缘用0填充。最终,每个GPU都生成的个13×13的特征图。
Layer 4与Layer3的区别在于卷积核的尺寸。Layer4不像Layer3那样接收的一层所有GPU的输入,而只接收所在GPU的输出。因此,Layer 4的卷积核的尺寸为3×3×192,每个GPU都有192个卷积核。
与Layer 3相同的是,Layer 4仍然进行扩充值为1的0填充,且步长为1。最终,Layer 4的每个GPU都生成192个13×13的特征图。卷积后,这两个层都会由ReLU函数进行处理。
(4)Layer 5卷积层
Layer 5会依次进行卷积、ReLU和池化操作,但不进行归一化操作。该层中的每个GPU都接收本GPU中 Layer 4的输出,每个GPU使用128个3×3×192的卷积核,步长为1,使用扩充值为1的0填充,各自生成128个13×13的特征图后进行池化操作。池化尺寸为3×3,步长为2,最终生成6×6×128的特征图(两个GPU,共256个)。
(5)Layer 6全连接层
从该层开始,后面的网络层均为全连接层。Layer 6仍然按GPU进行卷积,每个GPU使用2048个6×6×256的卷积核,这意味着该层中的每个GPU都会接收前一层中两个GPU 的输出。卷积后,每个GPU都会生成2048个1×1的特征图。最后,进行ReLU和dropout操作,两个GPU共输出4096个值。
(6)Layer 7全连接层
Layer7与Layer6相似,与Layer6进行全连接,在进行ReLU和dropout操作后,共输出4096个值。
(7)Layer 8全连接层
Layer 8只进行全连接操作,且该层拥有1000个神经元,最终输出1000个float型的值(该值即为预测结果)。

三、构建AlexNet

构建LRN层

LRN层通常用lambda层进行包装,参数一般设置如下:

model.add(keras.layers.lambdas(lambda x: tf.nn.lrn(x, depth_radius=2, alpha=0.00002, beta=0.75, bias=1)))

也可以用自定义层实现:

class LRN(keras.layers.Layer):
    def __init__(self, depth_radius=2, bias=1, alpha=0.00002, beta=0.75, **kwargs):
        super().__init__(**kwargs)
        self.depth_radius = depth_radius
        self.bias = bias
        self.alpha = alpha
        self.beta = beta

    def call(self, input):
        return tf.nn.lrn(input, self.depth_radius, self.bias, self.alpha, self.beta)

    def get_config(self):
        base_config = super().get_config()
        return {**base_config, 'depth_radius': self.depth_radius,
                'bias': self.bias, 'alpha': self.alpha, 'beta': self.beta}

构建模型:

model = keras.Sequential()
# 第一层
model.add(keras.layers.Conv2D(filters=96, kernel_size=(11,11), strides=(4,4), input_shape=(227,227,3), padding="VALID", activation="relu"))
model.add(LRN())
model.add(keras.layers.MaxPooling2D(pool_size=(3,3), strides=(2,2), padding="same"))
# 第二层
model.add(keras.layers.Conv2D(filters=256, kernel_size=(5,5), strides=(1,1), padding="SAME", activation="relu"))
model.add(LRN())
model.add(keras.layers.MaxPooling2D(pool_size=(3,3), strides=(2,2), padding="same"))
# 第三层
model.add(keras.layers.Conv2D(filters=384, kernel_size=(5,5), strides=(1,1), padding="SAME", activation="relu"))
# 第四层
model.add(keras.layers.Conv2D(filters=384, kernel_size=(5,5), strides=(1,1), padding="SAME", activation="relu"))
# 第五层
model.add(keras.layers.Conv2D(filters=256, kernel_size=(5,5), strides=(1,1), padding="SAME", activation="relu"))
model.add(keras.layers.MaxPooling2D(pool_size=(3,3), strides=(2,2), padding="same"))
# 第六层
model.add(keras.layers.Flatten())
model.add(keras.layers.Dense(4096, activation="relu"))
model.add(keras.layers.Dropout(0.5))
# 第七层
model.add(keras.layers.Dense(4096, activation="relu"))
model.add(keras.layers.Dropout(0.5))
# 第八层
model.add(keras.layers.Dense(10, activation="softmax"))

注:LRN层也可用BatchNormalization替代,性能也还OK

Original: https://blog.csdn.net/qq_52053775/article/details/124377926
Author: 樱花的浪漫
Title: 图像分类篇——AlexNet详解

相关文章
局部敏感哈希-向量相似搜索 人工智能

局部敏感哈希-向量相似搜索

在搜索推荐中,通常使用相似Embedding进行推荐,此时就会有一个问题: 如何快速找到与一个Embedding相近的其他Embedding 如果两个Embedding在同一个向量空间中,我们就可以通...
WeNet语音识别实战 人工智能

WeNet语音识别实战

WeNet简介 WeNet是出门问问语音团队联合西工大语音实验室开源的一款面向工业落地应用的语音识别工具包,该工具用一套简洁的方案提供了语音识别从训练到部署的一条龙服务,其主要特点如下: 使用conf...
安装tensflow2 CPU版经历 人工智能

安装tensflow2 CPU版经历

此文为个人安装过程,仅供参考 当前配置: ● Win10 家庭中文版 ● Python版本:3.10 由于Tensflow和Anaconda3都只支持到Python3.9,所以只能降级。(其实不影响,...