我的第一次优快云博客

一、为什么想写优快云?

最近在学习Python和深度学习有关知识,学习的内容较多,较难消化。需要对其整理,形成一个知识体系;另外做份笔记方便以后复习查看。

二、深度学习基础

本文的内容是基于《TensorFlow深度学习与入门与实践》,作者是日月光华老师。

1.代码的运行框架

(1)软件

  • miniconda3
    Miniconda3-py37_4.8.2-Windows-x86_64.exe
  • VS C++
    VC_redist.x64.exe

(2)安装包

需要安装的包有:tensorflow-cpu==2.3.0(注:我的电脑主机显卡是AMD,所以就安装了cpu版本,没有选择GPU版本)、numpy 、pandas 、 matplotlib 、 sklearn、 notebook 。在Anaconda Prompt(miniconda3)中,使用pip方法安装,具体格式为:

pip install 【包名】 -i https://pypi.douban.com/simple/

// 下面举两个例子:
pip install tensorflow-cpu==2.3.0 -i https://pypi.douban.com/simple/
pip install notenook -i https://pypi.douban.com/simple/

然后在Anaconda Prompt(miniconda3)中,输入ipython notebook(jupyter notebook),进入网络页面的notebook,新建python文件,就可以编写python代码啦。

2.深度学习基础

一般有回归问题分类问题

(1)基础知识

  1. 单变量线性回归方法
    连续线性回归预测的是 一个连续值。
    例如:要估计“教育程度"和“收入”之间的关系,已知一组数据(一个教育年限对应一个收入),现在告诉一个新的教育年限,让预测收入是多少? 我们根据已知数据,可以做出一个散点图,目标就是要找到一个函数(线性函数)能表示这组数据的趋势:
    f(x) =ax+b
    该方程的未知数系数有斜率a和截距b,然后需要我们解出模型,即,求出系数 a,b。
    怎么找呢?解决方法是引入一个损失函数(均方差):
    L =[y-f(x)]²/n
    不同的a,b,损失函数有不同的值。我们需要找到合适的a,b,使得均方差最小,即损失函数越小,说明预测值和真实值之间的误差最小。这时,a,b就是模型的最优解。

  2. 逻辑回归
    属于分类问题,通常也叫二分类问题,结果为“是”或“否”的回答
    sigmoid 函数是一个概率分布函数,给定某个输入,它将输出为一个概率值。
    对于分类问题,损失函数 使用 “交叉熵损失函数” 会更有效!
    在这里插入图片描述
    ——交叉熵会输出一个更大的‘损失’。
    在这里插入图片描述

  3. 多层感知器(多分类问题)
    属于多分类问题,即结果有多种可能。对于多个选项的问题,我们可以使用softmax 函数, 它是对数几率回归在N个可能不同的值上的推广。
    softmax函数可以将输出变成概率分布。
    softmax 的样本分量之和为1,当只有两个类别时,与对数几率回归完全相同(即2分类)。

多分类中 使用 categorical_crossentropy (one-hot 编码) / sparse_categorical_crossentropy 来计算交叉熵。

(2)代码实现

  1. 单变量线性回归方法
import matplotlib.pyplot as plt
pandas.read_csv()

%matplotlib inline                      # jupyter 自带的魔术方法  
# %matplotlib incline    有错

plt.scatter(data.Education,data.Income)            # 教育和收入的散点图

x = data.Education                                    # 数据准备    
y = data.Income

# 模型构建——顺序模型
model = tf.keras.Sequential()                        
model.add(tf.keras.layers.Dense(1,input_shape=(1,)))    # dense 全连接层 , 1是输出参数,表示一个输出;

model.compile( optimizer = 'adam',                # 训练使用的方法参数,优化方法adam
               loss = 'mse'                                      # 损失函数 选择均方差
)
history = model.fit(x,y,epochs=10000)   # 训练执行

model.predict(x)                       # 预测x
model.predict(pd.Series(20))   # 预测指定教育年限
  1. 逻辑回归
import tensorflow as tf
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline

data = pd.read_csv('.\dataset\credit-a.csv',header = None)

data.head()  # 显示第一行。

x = data.iloc[:, :-1]
y = data.iloc[:, -1].replace(-1,0)    # 将 y中的-1 换成 0

# 模型开始构建
model = tf.keras.Sequential()
model.add(tf.keras.layers.Dense(4,input_shape=(15,),activation = 'relu'))
model.add(tf.keras.layers.Dense(4,activation = 'relu'))
model.add(tf.keras.layers.Dense(1,activation = 'sigmoid'))

model.compile(optimizer='adam',
             loss='binary_crossentropy',
             metrics=['acc']
             )

history = model.fit(x,y,epochs=100)

plt.plot(history.epoch, history.history.get('loss'))   # 绘图,随着次数的增加,loss的变化情况
plt.plot(history.epoch, history.history.get('acc'))
  1. 多层感知器
import tensorflow as tf
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline

(train_image,train_label),(test_image,test_label) = tf.keras.datasets.fashion_mnist.load_data()  # 加载Fishion MINIST 数据集

train_image = train_image/255   # 归一化,方便不同数据的比较。
test_image = test_image/255

model = tf.keras.Sequential()
model.add(tf.keras.layers.Flatten(input_shape = (28,28))) # 28*28    # flatten 层
model.add(tf.keras.layers.Dense(128,activation = 'relu'))
model.add(tf.keras.layers.Dense(10,activation = 'softmax'))

model.compile(optimizer='adam',
             loss = 'sparse_categorical_crossentropy',               # 顺序编码  使用sparse_categorical_crossentropy
             metrics=['acc']
)

model.fit(train_image,train_label,epochs=5 )

model.evaluate(test_image,test_label)    # 使用测试数据集验证。

结语

还有深度学习的一些基本概念,如梯度下降、独热编码、优化函数、学习速率、反向传播,网络优化 与 超参数选择等等,可以留在下期。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值