1.使用tensorflow

1.张量和操作

tensorflow对张量的操作实际上和numpy差不多,不够有所差距,numpy的数据可以随时被修改,但是tensorflow的数据要分情况。

(1).使用tf.Constant()

a = tf.Constant([[1,2,3],[4,5,6]])

这个矩阵就是2*3的矩阵,但是它无法被修改,只能读取。

除了不能修改,其实和numpy的使用方法

比如查看它的大小也可以用:a.shape

索引方式也一样,这里不做过得描述

(2).tensorflow提供的数据操作函数

比如加法: a + 10 可以使用函数 tf.add(a, 10);

矩阵的乘法为tf.matmul(),它提供的函数和numpy都差不多,但是有些不一样,比如求和.tf.reduce_sum(),求均值为tf.reduce_mean(),求最大值tf.reduce_max();

numpy也可以用于tensorflow中,转换为张量。

(3)类型转换

tensorflow中有个很麻烦的东西,整形+浮点型会失败,float32和float64相加也会失败,它不会自动执行类型转换,需要你手动操作。

tf.cast()可以用来进行转换,比如把a转为float64类型的

tf.cast(a, tf.float64)

(4).变量

tf.Constant无法被改变,固定好深度学习的参数后,可以使用这个类型的变量,但是如果需要对它进行训练,则必须要使用tf.Variable

我们对tf.Variable的修改也需要使用特定的函数assign

a[0,0].assign(10)

这样a的第一个值就变为了10,这个就相当于a[0,0] = 10

麻烦就是这个啦,必须通过相应的函数来操作;

(5).其他数据结构

tensorflow还有其他数据结构,比如稀疏张量(tf.SparseTensor),张量数组(tf.TensorArrray),不规则张量(tf.RaggedTensor),字符串张量(tf.string)等等

2.定制模型和算法

1.自定义损失函数

比如自定义一个Huber

def huber_fn(y_true, y_pred):

error = tf.abs(y_true - y_pred);

is_small_error = tf.abs(error) < 1#门限设置为1

squared_loss = tf.abs(error)-0.5

return tf.where(is_small_error, squared_loss, linear_loss)

可以在Keras模型中使用这个函数

model.compile(loss=huber_fn, opitimizer= 'adam');

2.保存和加载自定义组件的模型

keras会保存函数的名字,每次加载的适合需要提供一个字典,将函数名称映射到实际函数。一般而言,当加载包含自定义对象的模式时,需要将名称映射到对象。

model = keras.models.load_model("model.h5", custom_objects = {'huber_fn':huber_fn})

如果需要更为灵活的函数,设定上面函数的阈值,不仅仅等于1

def more_freedom_huber(limit = 1.0):

def huber_fn(y_true, y_pred):

error = tf.abs(y_true - y_pred);

is_small_error = tf.abs(error) < 1#门限设置为1

squared_loss = tf.abs(error)-0.5

return tf.where(is_small_error, squared_loss, linear_loss)

return huber_fn
model = keras.models.load_model("model.h5", custom_objects = {'huber_fn':more_freedom_huber(2.0)})

还可以通过继承keras.losses.Loss类的子类,然后实现get_config()方法来解决问题

比如自定义激活函数,初始化方法,正则化和约束。

如果函数需要和模型一起保存,必须继承相应的对象,比如keras.regularizers.Regularizer,

相关推荐
居7然37 分钟前
解锁工业级Prompt设计,打造高准确率AI应用
人工智能·prompt·提示词
星期天要睡觉42 分钟前
机器学习——网格搜索(GridSearchCV)超参数优化
人工智能·机器学习
元宇宙时间4 小时前
RWA加密金融高峰论坛&星链品牌全球发布 —— 稳定币与Web3的香港新篇章
人工智能·web3·区块链
MZ_ZXD0015 小时前
springboot汽车租赁服务管理系统-计算机毕业设计源码58196
java·c++·spring boot·python·django·flask·php
A 计算机毕业设计-小途5 小时前
大四零基础用Vue+ElementUI一周做完化妆品推荐系统?
java·大数据·hadoop·python·spark·毕业设计·毕设
天涯海风7 小时前
检索增强生成(RAG) 缓存增强生成(CAG) 生成中检索(RICHES) 知识库增强语言模型(KBLAM)
人工智能·缓存·语言模型
lxmyzzs8 小时前
基于深度学习CenterPoint的3D目标检测部署实战
人工智能·深度学习·目标检测·自动驾驶·ros·激光雷达·3d目标检测
跟着珅聪学java8 小时前
Apache OpenNLP简介
人工智能·知识图谱
AwhiteV9 小时前
利用图数据库高效解决 Text2sql 任务中表结构复杂时占用过多大模型上下文的问题
数据库·人工智能·自然语言处理·oracle·大模型·text2sql
念念01079 小时前
数学建模竞赛中评价类相关模型
python·数学建模·因子分析·topsis