tensorflow
_吟游诗人
在昨天的未来里活成回忆
展开
-
tf.gather,取指定维度多个索引的数据
tensorflow和numpy在数据处理上语法相似但又不完全一样,比如在numpy中想取指定维度的多个指定索引所指向的数据时,直接用一个列表保存索引就能直接取,比如:# b的shape为[2, 3, 2]b = np.array([[[1, 2], [2, 3], [3,4]], [[4, 5], [5,6], [6, 7]]])a = [0, 1, 2]# 假若要取b的第2个维度(从1算起)的以a为索引的数据,只需写成如下形式b[:, a, :]但是若b是tensor形式,则上述操作会报错原创 2020-07-03 12:11:29 · 1923 阅读 · 0 评论 -
ValueError: Attempt to convert a value (1) with an unsupported type xx to a Tensor
如题所述问题,其本质是tensorflow版本不兼容的问题,但是为了一个错误去更新tensorflow版本,往往会消耗较长时间,而且说不定会引起其他地方依赖的问题。关于该问题可以考虑从不同角度进行考量,迂回解决。比如我在实验中,在使用a == None时出现了该问题,其中a为一个tensor,那么既然不能直接判断,那么可以根据其类型进行判断,即改为type(a) == type(None)即可。关于其他类型的问题,可以考虑通过对其中某个值、或者shape、dtype等进行判断,从另一个角度解决问题。原创 2020-06-02 20:01:39 · 7025 阅读 · 1 评论 -
tensorflow2中以复制方式扩展tensor —— tf.tile()
tensorflow2.0环境下,以复制方式扩展tensor,可以使用tf.tile()函数。该函数定义如下(图自官网):https://www.tensorflow.org/api_docs/python/tf/keras/backend/tiletf.tile()可以沿着某个维度对tensor进行指定倍数的复制,如下所示:import tensorflow as tfa = tf.constant([1, 2, 3])tf.tile(a, [2]) # <tf.Tensor: id=2原创 2020-05-11 14:52:11 · 4004 阅读 · 0 评论 -
tensorflow中tensor,从每行取指定索引元素
实验有需求,需要对tensor中每一行取一个不同的索引的元素,其中tensor为2维(本文方法适合任意维),因此本文以2维tensor为例。# 二维tensorg = tf.constant([[1,2,3,4,5,6,7,8],[9,8,7,6,5,4,3,2]])# 每一行取的index,在本例中,正确取值为[3, 2],即第一行index=2的元素和第二行index=7的元素h_in...原创 2020-02-27 14:14:17 · 10543 阅读 · 0 评论 -
Can not squeeze dim[1], expected a dimension of 1
遇上如题所示问题,多半是因为使用了sparse_categorical_crossentropy作为激活函数这会出现在分类问题中,这个激活函数要求如下:labels vector must provide a single specific index for the true class for each row of logits也就是说,你给的真实输出值,得是一个索引index而不...原创 2020-02-05 15:21:15 · 4555 阅读 · 9 评论 -
tensorflow2.0 - 保存模型(含自定义模型的保存)
tensorflow2.0保存模型的方式有很多,这里只介绍两种。一、 使用官方模型这种情况可以直接保存整个模型,如下所示,可以将模型保存为HDF5文件# 创建模型实例model = create_model()# 保存模型到HDF5文件model.save('my_model.h5')# 读取模型model = keras.models.load_model('my_model.h...原创 2020-02-04 15:17:56 · 6119 阅读 · 9 评论 -
(四)tensorflow2.0 - 实战稀疏自动编码器SAE
前文已经介绍完了tensorflow2.0自定义layer、model、loss function,本文将结合前述知识,搭建一个稀疏自动编码器SAE。先简单介绍稀疏自动编码器SAE,其架构如下图所示(图源网络,侵删),三层结构,输出层应尽量和输入层接近,其重点在于中间的隐藏层,隐藏层将数据进行了重新编码,这样做的目的是获得输入数据更好的数据表示。在普通自动编码器中,往往要求隐藏层元素个数要比输...原创 2020-02-03 13:13:55 · 6043 阅读 · 19 评论 -
(三)tensorflow2.0 - 自定义loss function(损失函数)
前文分别讲了tensorflow2.0中自定义Layer和自定义Model,本文将来讨论如何自定义损失函数。(一)tensorflow2.0 - 自定义layer(二)tensorflow2.0 - 自定义Model自定义损失函数有两种情况,一种比较简单,而另一种稍显复杂。先来讨论第一种简单的情况,即不需要额外的参数。什么叫额外的参数呢?损失函数有两个默认参数,分别为实际输出、预测输出...原创 2020-02-03 12:23:34 · 19778 阅读 · 3 评论 -
(二)tensorflow2.0 - 自定义Model
前文写了如何使用tensorflow2.0自定义Layer,本文将讲述如何自定义Model,并将前述的Layer应用到本Model中来。(一)tensorflow2.0 - 自定义layer自定义模型也比较简单,只是需要搞清楚Model中各部分的作用及执行流程即可。由于本例中将使用前文中的自定义Layer,因此先将其代码贴过来以便查阅,没看过前文的也没关系,不影响对自定义模型的理解。im...原创 2020-02-03 11:56:23 · 5909 阅读 · 11 评论 -
(一)tensorflow2.0 - 自定义layer
最近在用tensorflow2.0搭建一个简单的神经网络,虽然结构简单但是由于对自定义有要求,官方提供的layer和model不能满足要求,因此需要自行对layer、model、loss function进行自定义。由于tensorflow2.0发布不久,国内相关文章较少,我便决定写上这一系列文章。本文讨论tensorflow2.0中如何自定义layer。本文不讨论tensorflow1和2在...原创 2020-02-03 10:56:54 · 5528 阅读 · 0 评论