tensorflow
不需要手写CUDA代码能跑GPU;
容易构建大的计算图
Tensorflow包含以下特性:
模型的建立与调试、模型的训练、模型的部署、预训练模型调用
tf2.0将专注于简单性和易用性:
使用keras和eager execution轻松构建模型
在任意平台上实现生产环境的稳健模型部署
为研究提供强大的实验工具
通过清理废弃的api和减少重复来简化api
tf.data加载数据、tf.keras构建训练并验证模型、使用分布式策略进行分布式训练、导出到saved model
tf.keras介绍
tf.keras 数据集
from keras.datasets import cifar100
(x_train,y_train),(x_test,y_test)=cifar100.load_data()
tensorflow基础
import tensorflow as tf
tensorflow使用张量作为基本的计算单位
#定义一个随机数
random_float=tf.random.uniform(shape=())
#定义一个有2个元素的零向量
zero_vector=tf.zzeros(shape=(2))
#定义2*2的常量矩阵
a=tf.constant([[1.,2.],[3.,4.]])
#形状
a.shape
#类型
a.dtype
#数值
a.numpy()
自动求导机制
x=tf.Variable(initial_value=3.)
with tf.GradientTape() as tape:
y=tf.square(x)
y_grad=tape.gradient(y,x)
optimizer=tf.keras.optimizer.SGD(learning_rate=1e-3)
grads=tape.gradient(loss,variables)
optimizer.apply_gradients(grads_and_vars=zip(grads,variables))
tensorflow快速入门模型
模型构建-model与layer
class mymodel(tf.keras.Model):
def __init__(self):
super().__init__()
layers=tf.keras.layers
def call(self,input)
output=layers(inputs)
return output
迁移学习
tf.keras.applications中有一些预定义好的经典卷积神经网络结构,如VGG16,ResNet,MobileNet
model=tf.keras.application.MobileNetV2(weights=None,classes=5)
keras pipline与自定义模型
mdel=tf.keras.models.Sequential([
tf.keras.layers
tf.keras.layers.Softmax()])
inputs=tf.keras.Inputs(shape=(28,28,1))
x=tf.keras.layers(inputs)
outputs=tf.keras.layers.Softmax()(x)
model=tf.keras.Model(inputs=inputs,outputs=outputs)
使用keras Model的compile、fit和evaluate方法训练和评估模型
model.compile(optimizer,loss,metrics=[‘accuracy’],准确率衡):配置训练的相关参数
model.fit(data_loader.train_data,data_loader.train_label,epochs,batchsize)
model.evaluate(test_image,test_label)
model.save_weights(filepath)
model.load_weights(filepath,by_name=False)
tf常用功能模块
callbacks:
定制化保存模型,保存events文件
tensorboard:观察损失等情况
tf.data:数据集的构建与预处理
dataset=tf.data.Dataset.from_tensor_slices((x,y))
for x,y in dataset:
Datasets.map(f):对数据通过f函数解码
Datasets.shuffle(buffer_size):打乱
Datasets.batch(batch_size):批次处理
#数据增强
tf.keras.preprocessing.image.ImageDataGenerator()
读取目录
train_generator.flow_from_directory()