tf.keras.layers.GRU理解

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了tf.keras.layers.GRU理解相关的知识,希望对你有一定的参考价值。

参考技术A #########

tf的官方文档,我根据自己的理解加的注释

##########

encoder_inputs = tf.random.normal([32, 10, 8])

#input_shape=[batch_size, encoder_max_len, embeding_dim]:[32,10,8]

gru = tf.keras.layers.GRU(4)

#return_sequences默认为False,即只返回最后一个单元的output;return_state默认为False,不返回最后一个单元的hidden_state

output = gru(inputs)

print(output.shape)

#只输出最后一个单元的output,所以shape=[32,4]

gru = tf.keras.layers.GRU(4, return_sequences=True, return_state=True)

#return_sequences=True,返回每一个单元的output,encoder_max_len那么长的序列;return_state=True,返回最后一个单元的hidden_state

whole_sequence_output, final_state = gru(inputs)

print(whole_sequence_output.shape)

#输出每个单元的output,所以encoder_output.shape=[32,10,4]

print(final_state.shape)

##########

关于attention接收的是最后一个单元的hidden_state,还是整个序列的hidden_state,还是整个序列的output?

###########

我感觉是没有标准答案的。首选用整个序列的hidden_state,但是老师课上说每个RNN单元的输出就是hidden_state,所以整个序列的hidden_state=整个序列的output(这里是否真的等于我还是怀疑的);其次采用最后一个单元的hidden_state,毕竟包含了前面的序列信息,应该要扩展维度进行计算。但是,我觉得LSTM、GRU是采用了门控机制,最后一个单元的hidden_state过滤了部分信息,所以个人不建议采用。

整个序列的hidden_state=整个序列的output?在GRU里面是肯定的。从下面这个图看得出来

#########

在LSTM里面用什么计算attention?

#########

Attention计算是全局的,每个输出单词都要计算一次。另外,LSTM中,h和c,区别主要是,c可以理解成是记忆主线,h可以理解成短时记忆,h是根据当前输入组合产生的门控信号。H是单个的,c是累积的。

c主要是保存前面单元传过来的记忆信息+这个单元要记忆的,起到记忆作用;h主要还是保存这个单元重要信息的。

所以LSTM用C计算的更好。

理解yarn平台,理解万岁,肤浅理解也万岁~

从Hadoop1到Hadoop2很大程度上解放了Jobtracker资源调度的问题,这就得多亏了yarn平台了。
我知道的,除了我们的大豆瓣用的是Mesos,咱们国家可以说应该是99.99%都使用的是yarn,
当然了,国外使用的大多是Mesos。(然而我对Mesos并不理解啥,只知道他和yarn一样的作用吧)

Hadoop1当中,MapReduce(一下就简称mr,原谅我不想多打字的烦恼,kkk~)的主从结构,让jobtracker的重任很大,
要接收客户端的请求,要分配任务给tasktracker,还要进行资源监控和作业调度,这会给主节点带来很大的负担,
而且,主节点存在单点故障的问题,而且也没办法支持除了mr之外的计算框架,这也导致mr的运算结果也没办法给别的计算框架直接使用。
所以在Hadoop2中yarn就应运诞生了。
下面是官方给的图,大大牛果然还是不一样的,一个图就基本上解释了yarn产生的原因和带来的好处。(好崇拜大大牛先生~kkk)

 技术分享


谈一下我对yarn如何进行资源调度的理解吧:
我自己画的图,太乱了,将就着看~
YARN 是Hadoop 2.0 中的资源管理系统,它是一个通用的资源管理模块,可为各类应用程序进行资源管理和调度。
这肯定是官方的。
注意:这里我只画了一个任务,但是可以有多个任务的,appmaster向resourceManager注册自己的时候就会告诉ResourceManager自己执行的是哪个任务,就可以区分了

技术分享

 

以上是关于tf.keras.layers.GRU理解的主要内容,如果未能解决你的问题,请参考以下文章

关于BP网络的一些总结

梳理caffe代码base_conv_layer(十八)

laytpl js????????????

LayerMask

ajax的异步请求

卷积神经网络