深度学习入门篇01(Tensorflow-gpu的安装)

此文转载自:https://blog.csdn.net/qq_39228514/article/details/111591582

深度学习入门篇01(Tensorflow-gpu的安装)

  1. 前期准备
    Tensorflow-gpu的安装

  2. MLP(多层感知机的实现)
    Perceptron(感知机)

1.前期准备

Tensorflow主要分为1.x和2.x,目前来说语法上最简单的是2.x版本。其gpu版本的安装也很方便,仅需要两个依赖工具包(Cuda,cuDnn)即可,官网下的太慢,所以这里直接放出两个工具包(对应tensorflow2.3.0版本)的链接:
CUDA和cuDNN链接
提取码:
TWTW

以下是官网中工具包和对应版本的图示:
在这里插入图片描述
想要知道更多版本的对应情况也可以去官网查看:
tensorflow-gpu版本对应表
CUDA的安装很简单直接下一步到安装完成就行,然后将cuDnn文件夹解压后的bin,include和lib文件夹替换CUDA安装目录下对应名字的文件夹就行
在这里插入图片描述
接下来开始安装Tensorflow的gpu版本:
先将conda下载文件的路径更换为清华源,防止下载失败报错

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge 
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/

# 设置搜索时显示通道地址
conda config --set show_channel_urls yes

Tips: 这里是一条一条执行喔,不是一次执行。
创建名为deeplearning的虚拟环境

conda create -n deeplearning python=3.7  #tf为虚拟环境名称,可以换成自己的

创建之后需要激活才能使用

conda activate deeplearning 

出现以下的前缀就代表进入了虚拟环境:
在这里插入图片描述
要注意此时的虚拟环境只是一个纯净的python环境,没有依赖包。

然后用conda安装Tensorflow-gpu版本,因为我的CUDA和cuDnn都是对应2.3.0版本的tensorflow的,所以在这里就直接安装2.3.0版本的了

conda install tensorflow-gpu==2.3.0

装好过后在pycharm或者shell中查看GPU是否可用就行了:

import tensorflow as tf
print(tf.test.is_gpu_available())

输出以下信息就表示安装完成且可用了,最重要的是最后的True:
在这里插入图片描述
到这里算是安装完成了。

2.多层感知机的实现

感知机(感知器)算法可以说是最开始的机器学习算法,在这里可以简单看作神经网络中单个的神经元,再简化一下说就是一个 y ( x ) = ω x + b y(x) = omega x + b y(x)=ωx+b的函数。

多层感知器顾名思义就是多个感知器相连,其连接规则就是最基础的全连接,可以使用Tensorflow2.0中Kersa框架来很快速的搭建一个多层感知机:

import time
from tensorflow import keras
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

# 加载数据集
fashion_mnist = keras.datasets.fashion_mnist
#  分为训练集和测试集
(X_train_full, y_train_full), (X_text, y_text) = fashion_mnist.load_data()  # 每个图象为28*28的阵列
#  将训练集再分出一个验证集
X_valid, X_train = X_train_full[:5000] / 255.0, X_train_full[5000:] / 255.0  # 将像素值除以255,将所有像素值降低到0-1区间
y_valid, y_train = y_train_full[:5000], y_train_full[5000:]

#  创建类名列表
class_names = ['T-shirt/top', 'Trouser', 'Pullover', 'Dress', 'Coat', 'Sandal', 'Shirt', 'Sneaker', 'Bag', 'Ankle boot']

#  建立一个具有两个隐藏层的分类MLP
model = keras.models.Sequential()  # Sequential模型为最简单的,由顺序连接的单层堆栈组成,成为顺序API
model.add(keras.layers.Flatten(input_shape=[28, 28]))  # Flatten简单预处理,将图像转为一维数组,
# 也可不指定input_shape,则权重会在有数据输入时才初始化
model.add(keras.layers.Dense(300, activation='relu'))
model.add(keras.layers.Dense(300, activation='relu'))
model.add(keras.layers.Dense(10, activation='softmax'))  # 10类,且softmax将输出整合到0-1区间且和为1
# 也可使用列表方式来创建model
# model = keras.models.Sequential([
#     keras.layers.Flatten(input_shape=[28, 28]),
#     keras.layers.Dense(300, activation='relu'),
#     keras.layers.Dense(100, activation='relu'),
#     keras.layers.Dense(10, activation='softmax')
# ])
# print(model.summary())  # 展示model的所有层的基本信息

#  指定损失函数和要使用的优化器
model.compile(loss=keras.losses.sparse_categorical_crossentropy,  # 损失函数为多分类交叉熵
              optimizer=keras.optimizers.SGD(),  # 优化函数为随机梯度下降
              metrics=[keras.metrics.sparse_categorical_accuracy])
# model.compile(loss='sparse_categorical_crossentropy',
#               optimizer='sgd',
#               metrics=['accuracy'])
#  开始训练
start = time.process_time()
history = model.fit(X_train, y_train, epochs=30, validation_data=(X_valid, y_valid))
# 根据每一轮的loss画图
pd.DataFrame(history.history).plot(figsize=(8, 5))
plt.grid(True)
plt.gca().set_ylim(0, 1)  # 垂直坐标设为0-1区间
plt.show()

# 对新实例进行预测
X_new = X_text[:3]  # 取测试集的前三个
y_proba = model.predict(X_new)  # 输出的是属于每一类的概率
print(y_proba)
y_pred = model.predict_classes(X_new)  # 输出的是属于的类,此语句在20210101后会抛弃
# 可用np.argmax(model.predict(x), axis=-1)代替
print(y_pred)
print(np.array(class_names)[y_pred])

end = time.process_time()
print('time cost:', end - start)

注意这个Fashion Mnist数据集较大,第一次使用会默认从官网下载,非常慢,可以提前下好放在C:Users用户名.kerasdatasets下,并命名为fashion-mnist。

   

更多内容详见微信公众号:Python测试和开发

Python测试和开发

原文地址:https://www.cnblogs.com/phyger/p/14188633.html