tensorflow

tensorflow,第1张

张量

张量是多维数组(列表),阶是张量的维数。

#1.创建一个张量:
tf.constant(张量内容, dtype=数据类型)
#2.将numpy的数据类型转换为Tensor数据类型
tf.convert_to_tensor(数据名, dtype=数据类型)
#3.创建全为0的张量
tf.zeros(维度)
#3.创建全为1的张量
tf.ones(维度)
#4.创建全为指定值的张量
tf.fill(维度,指定值)
#5.生成正态分布的随机数,默认均值为0,标准差为1
tf.random.normal(维度,mean=均值,stddev=标准差)
#6.生成截断式正态分布的随机数 生成数据在均值附近
tf.random.truncated_normal(维度,mean=均值,stddev=标准差)

常用函数
#强制tensor转换为改数据类型
tf.cast(张量名,dtype=数据类型)
#计算张量维度上元素的最小值,最大值
tf.reduce_min(张量名)
tf.reduce_max(张量名)
#计算张量沿着指定维度的平均值,和  axis = 0列向 *** 作,=1横向 *** 作
tf.reduc_mean(张量名,axis= *** 作轴) 
tf.reduc_sum(张量名,axis= *** 作轴) 
#tf.Variable()将变量标记为“可训练”,被标记的变量会在反向传播中记录梯度信息。神经网络训练中,常用改函数标记待训练参数。
w = tf.Variable(tf.random.normal([2,2], mean=0,stddev=1))
#数学运算
#四则运算: 只有维度相同的张量才可以做四则运算
tf.add, tf.subtract, tf.multiply, tf.divide
#平方、次方与开方:
tf.square, tf.pow, if.sqrt
#矩阵乘 
tf.matmul
#将输入特征与标签配对,构建数据集
data = tf.data.Dataset.from_tensor_slices((输入特征,标签))
#with结构记录计算过程,gradient求出张量的梯度
with tf.GradientTape() as tape:
	w = tf.Variable(tf.constant(3.0))
	loss = tf.pow(w,2)
grad = tape.gradient(loss,w)#(函数,对谁求导)
#enumerate 它可遍历每个元素(如列表、元组或字符串),返回(索引,元素)
for i,element in enumerate(容器):
	print(i,element)
#tf.one_hot() 函数将待转换数据转换为one-hot形式的数据输出
tf.one_hot(待转换数据,depth=几分类)
#tf.nn.softmax()使输出符合概率分布
#返回张量沿指定维度最大值的索引
tf.argmax(张量名,axis= *** 作轴)
网络搭建
#import :
import tensorflow as tf
import os
import numpy as np
from tensorflow.keras.layers import Conv2D, BatchNormalization, Activation, MaxPool2D, Dropout, Flatten, Dense
from tensorflow.keras import Model
train, test
#定义网络结构
model = tf.keras.models.Sequential([网络结构])
	#网络结构举例:
	#拉直层 
	tf.keras.layers.Flatten()
	#全连接层
	tf.keras.layers.Dense(神经元个数,activation='激活函数',kernel_regularizer=正则化)
		#激活函数可选:
		relu,softmax,sigmoid,tanh
		#kernel_regularizer可选
		tf.keras.regularizers.l1(), tf.keras.regularizers.l2()
	#卷积层
	tf.keras.layers.Conv2D(filters =卷积核个数,kernel_size=卷积核尺寸 ,strides=卷积步长,padding="valid" or "same")
	#LSTM层
	tf.keras.layers.LSTM()
#配置神经网络的训练方法
model.compile(optimizer = 优化器 
			,loss = 损失函数
			,metrics = ["准确率"])
	#Optimizer可选:
	'sgd' or tf.keras.optimizers.SGD(lr=学习率, momentum=动量参数)
	'adagrad' or tf.keras.optimizers.Adagrad(lr=学习率)
	'adadelta' or tf.keras.optimizers.Adadelta(lr=学习率)
	'adam' or tf.keras.optimizers.Adam(lr=学习率,beta_1=0.9,beta_2=0.999)
	#loss可选:
	'mse' or tf.keras.losses.MeanSquaredError()
	'sqarse_categorcal_crossentropy' or tf.keras.losses.SparseCategoricalCrossentropy(from_logits=False)
	#Metrics可选:
	'accuracy' :y_,y都是数值
	'categorical_accuracy' : y_,y都是独热码
	'sparse_categorical_accuracy': y_是数值 y是独热码
#执行训练过程
model.fit(训练集的输入特征, 训练集的标签
		,batch_szie = 
		,epochs = 
		,validation_split = 从训练集划分多少比例给测试集)
#打印网络的结构和参数统计
model.summary
#数据增强(增大数据量)
image_gen_train = tf.keras.preprocessing.image.ImageDataGenerator(
	rescale =
	rotation = 
	width_shift_range = 
	height_shift_range = )
image_gen_train.fit(x_train)
搭建网络Class
class MyModel(Model):
	def __init__(self):
		super(MyModel, self).__init__()
		定义网络结构块
	def call(self, x):
		实现前向传播
		return y
读取保存模型
#读取模型 load_weights(路径文件名)
checkpoint_save_path = './checkpoint/mnist.ckpt'
if os.path.exists(checkpoint_save_path + '.index'):
	model.load_weights(checkpoint_save_path)
#保存模型
cp_callback = tf.keras.callbacks.ModelCheckpoint(
	filepath = 路径文件名
	,save_weights_only = True/False
	,save_best_only = True/False)
history = model.fit(x_train, y_train
					,...
					,callbacks = [cp_callback])

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/714348.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-24
下一篇 2022-04-24

发表评论

登录后才能评论

评论列表(0条)

保存