Tensorflow2.1.0最简教程

Tensorflow2.0主要的特性

1.使用tf.keras和eager mode进行更加简单的模型构建
2.鲁棒的跨平台模型部署
3.强大的研究实验
4.清除不推荐使用的API和减少重复来简化API

Tensorflow2.0的架构

在这里插入图片描述

Tensorflow2.0的开发流程

1.使用tf.data加载数据
2.1使用tf.keras构建模型,也可以使用premade estimator来验证模型
2.2使用tensorflow hub进行迁移学习
3.使用eager mode进行运行和调试
4.使用分布策略来进行分布式训练
5.导出SavedModel
6.使用tensorflow Server、tensorflow lite、tensorflow.js部署模型

Tensorflow 第一个程序

1+1/2+1/4+1/8……

import tensorflow as tf   #引入tensorflow包
print (tf.__version__)    #打印tensorflow版本
x = tf.Variable(0.)       #设置变量x
y = tf.Variable(1.)       #设置变量y
for i in range(50):       #python循环
    x = x+y				  #操作1
    y = y/2				  #操作2
print(x.numpy())          #以numpy的格式输出x

实现以上操作的基础使用

1 . 设置变量(Variable)

x = tf.Variable(0.) 

2.操作

x = x+y   #直接像python一样操作就行

3.输出

print(x.numpy())          #以numpy的格式输出x

4.额外的知识张量

A = tf.constant([[1., 2.], [3., 4.]])#就是多维数组类型的变换而已

模型搭建

1.理论

1.1keras是什么

keras是python的高级神经网络API

1.2损失函数

损失函数就是衡量预测值与真实值之间的差距

常见的有
平方差损失(分类/回归)
交叉熵(分类)
绝对值损失(回归)

举个例子
在这里插入图片描述

1.3激活函数

我们搭建的模型一般只能处理线性输出(y = kx+b)
而我们处理的函数多少都是曲线
这时候就需要激活函数“掰弯”才能用

引用百度百科
激活函数(Activation functions)对于人工神经网络 [1] 模型去学习、理解非常复杂和非线性的函数来说具有十分重要的作用。它们将非线性特性引入到我们的网络中。如图1,在神经元中,输入的 inputs 通过加权,求和后,还被作用了一个函数,这个函数就是激活函数。引入激活函数是为了增加神经网络模型的非线性。没有激活函数的每层都相当于矩阵相乘。就算你叠加了若干层之后,无非还是个矩阵相乘罢了

2.代码片段

2.1 引入库文件

import tensorflow as tf
from tensorflow import keras

2.2获取数据并拆分成训练集和测试集

# 获取数据集,没有会下载
fashion_mnist = keras.datasets.fashion_mnist
 
(x_train_all, y_train_all), (x_test,y_test) = fashion_mnist.load_data()#拆分数据集
#x_train_all  , x_text= x_train_all / 255 ,x_test /255#对模型进行归一化(让数据全变成1以内显著提高模型训练准确率)

2.3sklearn数据标准化

#
from sklearn.preprocessing import StandardScaler#导入库文件
scaler = StandardScaler()#创建实例
train_scaled = scaler.fit(data)#学习到训练集的均值和方差(测试集,验证集都要用训练集的均值和方差)
train_scaled = scaler.fit_transform(data)#学习到训练集的均值和方差同时标准化数据
train_scaled = scaler.transform(data)#标准化数据(必须先学习均值和方差)

2.4创建模型

2.4.1创建框架
#创建模型
model = keras.models.Sequential() #先生成一个模型框架
2.4.2 创建输入层
#往框架中加入输入层
model.add(keras.layers.Flatten(input_shape = [28,28]))#定义输入层
#输入层将矩阵全部变成一维向量,变化之前的维度需要定义
 # input_shape=x_train.shape[1: ]输入层的形状这么写可以省不少麻烦
2.4.3创建隐藏层
2.4.3.1 全连接
model.add(keras.layers.Dense(128,activation = "relu"))
#创建全链接层,有128个神经元,激活函数设定为relu
2.4.3.2 批归一化
model.add(keras.layers.BatchNormalization())#增加批归一化,这样更好的解决深度学习中的梯度消失问题
2.4.3.3 激活函数
model.add(keras.layers.Activation('relu'))#增加激活函数,增加模型处理非线性问题的能力
2.4.3.4 Dropout
model.add(keras.layers.AlphaDropout(rate = 0.5))#更强大的Dropout,随机删除节点,增加模型对抗过拟合的能力
model.add(keras.layers.Dropout(rate = 0.5))#普通的Dropout
2.4.3.1 展平数据
model.add(keras.layers.Flatten())#将数据展平
2.4.4创建输出层
model.add(keras.layers.Dense(10,activation = "softmax"))
#创建输出层,因为是分类模型所以用softmax将输出转化成概率

2.5定义模型调整策略

model.compile(optimizer='adam',#求解模型的方法
             loss='sparse_categorical_crossentropy',#损失函数必须是向量如果已经是向量可省略sparse_
             metrics=['accuracy'])#将其他参数加入到图中,并将图固化
             

2.6训练

history = model.fit(x_train_all, y_train_all,epochs = 5, #history用来接收训练过程中的一些参数数值 #训练的参数#训练5遍
                    validation_data = (x_test,y_test) )#实时展示模型训练情况

2.7回调函数

import tensorflow as tf
from tensorflow import keras
import os #包含相应的库文件
logdir = './callbacks'#定义TensorBoard需要的文件夹名称
if not os.path.exists(logdir):
    os.mkdir(logdir)#如果没有就创建文件夹
output_model_file = os.path.join(logdir,"fashion_mnist_model.h5")#ModelCheckpoint所需要的模型文件名称
callbacks = [
    keras.callbacks.TensorBoard(logdir)#TensorBoard训练过程的可视化
    ,keras.callbacks.ModelCheckpoint(output_model_file,save_bast_only = True)#模型保存,第二个参数是True则保存最有模型,False保存最近模型
    ,keras.callbacks.EarlyStopping(monitor='val_loss',min_delta = 1e-3,patience = 5)#定义在什么时候停止训练(对哪个值进行检测/小于几/出现几次停止训练)(检测值有:acc/正确率,val_acc/验证集准确率,loss/损失率,acc_loss,验证集损失率)
]
#使用时需要在训练模型的model.fit()函数里加入参数callbacks = callbacks
#使用的时候进入程序所在文件夹输入 tensorboard --logdir=callbacks 然后在浏览器登录命令行提示的网址就可以了

2.8其他额外的应用(可视化,打印信息)

2.8.1显示单张图片
def show_single_image(img_arr):
    plt.imshow(img_arr,cmap = "binary")
    plt.show()
show_single_image(x_train_all[0])#输入参数是图片的数据
2.8.2显示多张图片
def show_imgs(n_rows,n_cols,x_data,y_data,class_name):
    assert len(x_data) == len(y_data)
    assert n_rows * n_cols < len(x_data)
    plt.figure(figsize = (n_cols * 1.4,n_rows * 1.6))
    for row in range(n_rows):
        for col in range(n_cols):
            index = n_cols * row + col
            plt.subplot(n_rows,n_cols,index+1)
            plt.imshow(x_data[index], cmap = "binary",interpolation = "nearest")
            plt.axis('off')
            plt.title(class_names[y_data[index]])
    plt.show()
class_names = ['T-shirt','Trouser','Pullover','Dress','Coat','Sandal','Shirt','Sneaker','Bag','Ankle boot']#必须规定class_names才能使用
show_imgs(10,10,x_train_all,y_train_all,class_name)#输入参数分别是几行、几列、图片数据、对应分类、分类名称所在列表
        
2.8.3打印层概况、模型架构
model.summary()#打印模型架构
model.layers# 输出层概况
2.8.4打印模型训练曲线
def plot_learning_curves(history):
    pd.DataFrame(history.history).plot(figsize=(8,5))
    plt.grid(True)
    plt.gca().set_ylim(0,1)
    plt.show()
plot_learning_curves(history)#(输入训练时的返回值)

超参数搜索

用sklearn封装model

#定义函数和默认值
def build_model(hidden_layers = 1,
               layer_size = 30,
               learning_rate = 3e-3):
#创建一个模型               
    model = keras.models.Sequential()
#定义层结构    
	model.add(keras.layers.Dense(layer_size,activation='relu',
                                input_shape = x_train.shape[1:]))
    for _ in range(hidden_layers-1):
        model.add(keras.layers.Dense(layer_size,
                                    activation = 'relu'))
    model.add(keras.layers.Dense(1))
    optimizer = keras.optimizers.SGD(learning_rate)
#定义模型的解决方案
    model.compile(loss = 'mse',optimizer = optimizer)
#返回整个模型    
    return model
 
#用模型sklearn接收模型(KerasClassifier分类、KerasRegressor回归)
sklearn_model = keras.wrappers.scikit_learn.KerasRegressor(build_model)

超参数训练模型

#GridSearchCV穷尽网格测试
#RandomizedSearchCV随机参数搜索
#引入分布函数
from scipy.stats import reciprocal#reciprocal分布函数表达式f(x) = 1/(x*log(b/a)) a<=x<=b

# 定义参数范围
param_distribution = {
    "hidden_layers":[1,2,3,4],
    "layer_size":np.arange(1,100),
    "learning_rate":reciprocal(1e-4,1e-2),
}

from sklearn.model_selection import RandomizedSearchCV#包含必须的库文件 

random_search_cv = RandomizedSearchCV(sklearn_model, #哪个模型
                                     param_distribution,#参数范围
                                     n_iter = 10,#随机取几组
                                     n_jobs = 1)#并行数
#此处的训练参数和keras一模一样                                     
random_search_cv.fit(x_train_scaled,y_train,epochs = 100,
                    validation_data = (x_valid_scaled,y_valid),
                    callbacks = callbacks)
                    
#可以对reciprocal分布参数进行查看,并输出训练后的最优参数:
 
print(random_search_cv.best_params_)#打印最优参数
print(random_search_cv.best_score_)#打印最优评分
print(random_search_cv.best_estimator_)#打印最优模型
#最后进行对最优model的测试:

model = random_search_cv.best_estimator_.model#使用最优秀的模型
model.evaluate(x_test_scaled,y_test)#对模型进行评价

遗传算法调参

#定义参数范围
paramgrid = {"kernel": ["rbf"],
             "C"     : np.logspace(-9, 9, num=25, base=10),
             "gamma" : np.logspace(-9, 9, num=25, base=10)}


#引入必须的库文件
from evolutionary_search import EvolutionaryAlgorithmSearchCV
#遗传算法调优
cv = EvolutionaryAlgorithmSearchCV(estimator=SVC(), #模型是哪个
                                   params=paramgrid,#参数范围
                                   scoring="accuracy",#评分
                                   cv=StratifiedKFold(n_splits=4),
                                   verbose=1,
                                   population_size=50,#人口规模
                                   gene_mutation_prob=0.10,#一般突变
                                   gene_crossover_prob=0.5,#基因重组
                                   tournament_size=3,#比赛规模
                                   generations_number=5,#世代数
                                   n_jobs=4)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 1. 确认你的电脑是否支持GPU加速,如果支持,需要安装相应的显卡驱动程序。 2. 安装CUDA Toolkit,这是一个用于GPU加速的工具包,可以从NVIDIA官网下载对应版本的CUDA Toolkit。 3. 安装cuDNN,这是一个用于深度学习的GPU加速库,也可以从NVIDIA官网下载对应版本的cuDNN。 4. 安装Anaconda或者Miniconda,这是一个Python的环境管理工具,可以从官网下载对应版本的安装包。 5. 创建一个新的conda环境,可以使用以下命令: conda create -n tensorflow-gpu python=3.7 6. 激活新的conda环境,可以使用以下命令: conda activate tensorflow-gpu 7. 安装tensorflow-gpu,可以使用以下命令: pip install tensorflow-gpu==2.1. 8. 安装其他需要的Python库,例如numpy、matplotlib等。 9. 测试安装是否成功,可以使用以下代码: import tensorflow as tf print(tf.__version__) print(tf.test.is_gpu_available()) 如果输出的版本号为2.1.,并且is_gpu_available()返回True,则说明安装成功。 以上就是tensorflow2.1.gpu安装教程的详细步骤。 ### 回答2: TensorFlow是一种用于机器学习深度学习的开源软件库,2.1.0是TensorFlow的一个版本。通常情况下,安装TensorFlow可以在CPU和GPU上进行。现在,我们将介绍安装TensorFlow 2.1.0 GPU版本的步骤。 首先,安装CUDA和cuDNN,因为TensorFlow需要这些软件来与GPU进行交互。 CUDA是英伟达公司的GPU加速计算平台,而cuDNN是针对深度学习的GPU加速库。您可以在英伟达的官方网站上下载并安装最新版本。确保您的CUDA和cuDNN是与您的TensorFlow版本兼容的。安装完成后,请将CUDA和cuDNN的路径添加到您的系统环境变量中。 接下来,您可以使用命令行(cmd)或Jupyter笔记本来安装TensorFlow。首先,确保您的pip是最新版本,可以使用以下命令来更新: ``` pip install --upgrade pip ``` 然后,使用以下命令来安装TensorFlow2.1.0: ``` pip install tensorflow-gpu==2.1.0 ``` 如果您在安装过程中遇到问题,请检查CUDA和cuDNN的版本是否正确并添加到系统环境变量中。此外,如果您使用Anaconda或其他虚拟环境,请确保您已激活该环境。 安装完成后,您可以使用以下代码来检查TensorFlow是否已正确安装: ``` import tensorflow as tf print(tf.__version__) print("Num GPUs Available: ", len(tf.config.experimental.list_physical_devices('GPU'))) ``` 如果控制台输出TensorFlow的版本和GPU的数量,则说明TensorFlow已正确安装。 总之,安装TensorFlow2.1.0 GPU版本需要先下载和安装CUDA和cuDNN,然后使用pip命令来安装TensorFlow。尽管安装有一定的技术含量,但这个过程是很简单的,只要您遵循上述步骤,就可以很快地安装TensorFlow2.1.0 GPU版本。 ### 回答3: Tensorflow是一种广泛使用的深度学习框架。在开发过程中,许多人希望能够使用graphics processing unit (GPU)来加速模型的训练,因为GPU可以极大地提高训练速度。在这篇文章中,我们提供了Tensorflow2.1.0的GPU安装教程,帮助大家快速地安装其运行环境。 第一步:安装Anaconda 在开始安装Tensorflow之前,我们需要先安装Anaconda,这是一种功能强大的Python发行版,可让我们轻松地配置Python环境并管理第三方软件包。 在安装Anaconda之前,我们需要在官网下载对应的安装文件。下载完成后,按照官方指示逐步安装即可。 第二步:创建Python虚拟环境 接下来,我们需要创建一个虚拟环境,以便Tensorflow与其他Python库不会产生冲突。在Anaconda Navigator中,打开终端或cmd,输入以下命令即可: conda create -n tensorflow-gpu python=3.7 在此过程中,我们可以根据需求将虚拟环境命名为tensorflow-gpu。此外,在创建时,我们还需要确保python版本是3.7或更高版本。 第三步:安装NVIDIA显卡驱动和CUDA 在使用GPU加速Tensorflow之前,我们需要安装NVIDIA显卡驱动和CUDA库。为了安装CUDA库,我们首先需要确定计算机的显卡型号。可以通过以下命令进行检查: nvidia-smi 在确定显卡型号后,我们需要从官方网站下载与其兼容的驱动程序和CUDA版本。 下载完成后,我们需要在Anaconda中打开虚拟环境,进入虚拟环境后,使用以下命令进行安装: conda install cudatoolkit=10.1 在此安装命令中,cudatoolkit版本号为10.1,以适应NVIDIA驱动程序。需要根据自己的显卡型号选择安装相应版本的显卡驱动程序和CUDA。 第四步:安装Tensorflow GPU版本 当我们完成了CUDA和显卡驱动程序的安装之后,我们就可以安装Tensorflow GPU版本了。在虚拟环境中,使用以下命令进行安装: pip install tensorflow-gpu==2.1.0 -i https://pypi.douban.com/simple/ 在此命令中,我们指定了tensorflow-gpu版本为2.1.0,以保证Tensorflow版本与CUDA和显卡驱动程序的兼容性。 第五步:测试安装 在完成安装之后,我们可以尝试运行以下Python代码,以测试Tensorflow是否成功安装: import tensorflow as tf print(tf.__version__) 如果正确安装,输出结果应该显示安装的Tensorflow版本号。 以上就是Tensorflow2.1.0 GPU安装教程的全部步骤,希望以上内容能够对大家有所帮助。需要注意的是,安装过程中需要考虑到调整台式电脑或者笔记本电脑的显卡适用性问题,出现驱动兼容性问题需要及时修改配置,否则将无法完成安装和调试。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值