2020.9.28

Q1:循环神经网络对可变长序列的处理

直接填充0

结论:在数据运算上是没有问题的,但是从序列的整个含义来说,是不合理的,一般情况不这么做。

tensorflow中处理可变长序列

tensorflow中对变长序列的输入是通过在dynamic_rnn()函数中的sequence_length参数来制定的,这个参数是一维数组,每一个数组的元素为所对应的timesteps数目,而填充的01根本没有参加运算,只不过是一个“空壳子”,为了保持数据的完整性而存在的。

keras对可变长序列的处理

使用Embedding层实现变长序列的输入
使用Masking层来处理可变序列

https://blog.csdn.net/qq_27825451/article/details/88991529
这个博客讲的非常详细,也有实验demo

tnsorflow2.0 实验标准步骤

数据集处理五步法

  1. 准备要加载的numpy数据
  2. 使用tf.data.Dataset.from_tensor_slices()函数进行加载
  3. shuffle()打乱数据
  4. 使用map()进行预处理
  5. 使用batch函数设置 batch size
  6. 根据需要使用 repeat()是否循环迭代数据集

keras中的非Sequential模型

在keras最常见的就是Sequential类型的模型,其特点是只有一个输入和输出,而且网络是层的线性堆叠。
函数式API
https://blog.csdn.net/bqw18744018044/article/details/83832002
这篇讲的也非常详细

Kears.metric.accuracy 总结

  • 当你的标签和预测值都是具体的label index(如y_true=[1,2,1], y_pred=[0,1,1])时,用keras.metrics.accuracy
  • 当你的标签是具体的label index,而prediction是向量形式(如y_true=[1, 2, 1], y_pred=[[0.2, 0.3, 0.5], [0.9, 0.1, 0], [0, 0.4, 0.6]])时,用keras.metrics.sparse_categorical_accuracy。
  • 当你的标签是onehot形式,而prediction是向量形式(如y_true=[[0, 1, 0], [0, 0, 1], [0, 1, 0]], y_pred=[[0.2, 0.3, 0.5], [0.9, 0.1, 0], [0, 0.4, 0.6]])时,用keras.metrics.categorical_accuracy。

细枝末节

  • tensorflow logits 经过神经网络输出之后,进入softmax之前。
  • tf.argmax(vector, 1):返回的是vector中的最大值的索引号,如果vector是一个向量,那就返回一个值,如果是一个矩阵,那就返回一个向量,这个向量的每一个维度都是相对应矩阵行的最大值元素的索引号。
  • tf.reduce_mean 函数用于计算张量tensor沿着指定的数轴(tensor的某一维度)上的的平均值,主要用作降维或者计算tensor(图像)的平均值。
  • categorical_crossentropy 和 sparse_categorical_crossentropy 的区别在哪?如果你的 targets 是 one-hot 编码,用 categorical_crossentropy one-hot 编码:[0, 0, 1], [1, 0, 0], [0, 1, 0]。如果你的 tagets 是 数字编码 ,用 sparse_categorical_crossentropy。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值