栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

tensorflow

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

tensorflow

张量

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

#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])
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/822478.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号