tensorflow常用函数介绍
tf.greater函数

tf.greater函数tf.greater函数是TensorFlow的一个函数,其主要作用是比较两个张量(Tensor)的元素是否符合大于关系。
在本文档中,我们将介绍tf.greater函数的使用方法、函数原型、返回类型以及实例应用。
## 函数原型在TensorFlow中,tf.greater函数的原型定义如下:```python tf.greater(x, y, name=None) ```其中,参数x和y是需要比较的两个张量,name是可选参数,用于给当前操作命名。
## 返回类型tf.greater函数返回的是一个张量(Tensor),其值的类型为bool型。
如果x的某个元素的值大于y的对应元素的值,则返回True,否则返回False。
如果x和y的shape不一样,则会使用广播规则进行自动填充。
例如,如果x的shape为(3,1),y的shape为(1,4),则用广播规则将它们自动填充为(3,4)的shape。
## 使用方法tf.greater函数的使用方法非常简单,只需要调用该函数并将需要比较的两个张量作为参数传入即可。
例如,以下代码比较了两个张量x和y的大小关系:```python import tensorflow as tfx = tf.constant([1, 3, 5, 7]) y =tf.constant([3, 1, 7, 5])greater = tf.greater(x, y)with tf.Session() as sess:print(sess.run(greater)) ```该代码将输出结果为:[False True False True]。
这说明,x中第1个元素的值比y中对应的元素的值小,x 中第2个元素的值比y中对应的元素的值大,x中第3个元素的值比y中对应元素的值小,x中第4个元素的值比y中对应的元素的值大。
实际应用时,tf.greater函数常常和其他TensorFlow 函数一起使用。
tensorflow的embedding函数参数

TensorFlow的embedding函数参数1.导言在使用深度学习进行自然语言处理(N LP)任务时,词嵌入(W or dE mb ed di ng)是一个重要的概念。
它将自然语言中的词语转化为低维稠密向量,可以在机器学习模型中使用。
Te ns or Fl ow是一个广泛应用于深度学习的开源框架,其中的em be dd i ng函数可以帮助我们实现词嵌入的功能。
本文将详细介绍Te ns or Flo w的e mb ed di ng函数以及其参数的使用方法。
2. Te nsorFlo w的e m b e d d i n g函数T e ns or Fl ow的e mbe d di ng函数是一个非常强大和灵活的函数,用于实现词嵌入的功能。
它将一个整数序列作为输入,并将其转换为对应的词嵌入向量序列。
具体来说,e mb ed di ng函数将整数序列表示为矩阵的形式,其中每一行都是一个词嵌入向量。
3. em bedding函数的参数在使用e mb ed di ng函数时,我们可以根据需要设置不同的参数。
下面是一些常用的参数:3.1i n p u t_d i mi n pu t_di m参数指定了输入序列中不同词语的个数。
它是一个正整数。
例如,如果我们的输入序列中有10000个不同的词语,那么i np ut_d im应该设置为10000。
3.2o u t p u t_d i mo u tp ut_d im参数指定了每个词语的词嵌入向量的维度。
它是一个正整数。
例如,如果我们希望每个词语的词嵌入向量是100维的,那么o u tp ut_d im应该设置为100。
3.3i n p u t_l e n g t hi n pu t_le ng th参数指定了输入序列的长度。
它允许我们指定不同序列的长度。
例如,如果我们的输入序列的长度是10,那么i n pu t_le ng th应该设置为10。
3.4e m b e d d i n g s_i n i t i a l i z e re m be dd in gs_i ni tia l iz er参数指定了词嵌入矩阵的初始化方法。
tf函数的用法

tf函数的用法TensorFlow是一个由谷歌开发、广泛应用于机器学习和深度学习领域的开源软件库。
在TensorFlow中,tf函数是其重要之一的组成部分。
本文将详细介绍tf函数的用法,帮助读者在应用TensorFlow时更加高效、方便地进行代码编写和调试。
1. tf函数简介tf函数是TensorFlow库中封装了一系列常用数学函数或深度学习模块的函数集合。
这些函数大大简化了机器学习模型的设计和实现,同时也极大地加速了模型的训练和测试过程。
tf函数中包含的模块有:数学运算模块、矩阵运算模块、卷积运算模块、激活函数模块、损失函数模块、优化器模块等。
2. 数学运算模块数学运算模块主要包含了常见的算术运算、逻辑运算、统计运算和向量运算等。
例如,可以使用tf.add()函数实现两个张量的加法;使用tf.subtract()函数实现向量的减法等。
这些函数的调用方式也非常简单,例如tf.add(a,b),其中a和b 是需要相加的两个张量。
调用方式非常方便,大大简化了代码编写的难度。
3. 矩阵运算模块矩阵运算模块主要包含了矩阵加、矩阵减、矩阵点乘、矩阵转置等常见操作。
例如,可以使用tf.matmul()函数实现两个矩阵的点乘;使用tf.transpose()函数实现矩阵的转置等。
这些函数的调用方式也非常简单,且高度优化。
使用TensorFlow 进行矩阵运算时,速度非常快,并且集成了GPU加速功能,但是并不需要显式地写出GPU加速代码,TensorFlow会自动进行加速。
4. 卷积运算模块卷积运算模块主要用于卷积神经网络(Convolutional Neural Networks, CNN)中的卷积运算。
例如,可以使用tf.nn.conv2d()函数实现二维卷积运算;使用tf.nn.conv3d()函数实现三维卷积运算等。
这些函数的调用方式也非常简单,只需传入合适的参数就可以进行卷积运算。
同时,TensorFlow会自动进行优化,使运算速度更快。
tensorflow预测函数计算公式

一、介绍TensorFlow是一个开源的人工智能框架,它可以用于构建和训练深度神经网络模型。
在TensorFlow中,预测函数是非常重要的一部分,它可以用来计算模型对输入数据的预测结果。
本文将介绍TensorFlow 中预测函数的计算公式及其相关内容。
二、预测函数的计算公式在TensorFlow中,预测函数的计算公式通常遵循以下基本步骤:1. 加权求和输入数据会经过一系列的输入层、隐藏层和输出层,每一层都包含一组权重参数。
在预测函数中,输入数据会分别与对应的权重进行相乘,并将结果进行求和。
这个过程可以用如下公式表示:h = Wx + b其中,h是预测函数的输出,W是权重参数矩阵,x是输入数据,b是偏置项。
2. 激活函数在加权求和之后,通常会使用一个激活函数来对预测结果进行非线性转换。
常见的激活函数包括sigmoid函数、ReLU函数、tanh函数等,它们可以有效地增加模型的表达能力。
激活函数的计算公式如下:a = f(h)其中,a是激活函数的输出,f是激活函数。
3. 输出结果经过激活函数的转换后,我们就可以得到模型对输入数据的预测结果。
在分类问题中,通常会使用softmax函数对预测结果进行归一化,以获得每一类别的概率值。
在回归问题中,预测结果即为最终的输出值。
通过上述三个步骤,我们可以得到TensorFlow中预测函数的计算公式。
这个公式被广泛应用在深度学习模型中,并为模型带来了强大的预测能力。
三、预测函数的优化在实际应用中,预测函数的性能往往会受到多种因素的影响,包括数据质量、模型结构、参数设置等。
为了获得更好的预测性能,我们可以对预测函数进行优化。
以下是一些常见的优化方法:1. 参数调优通过调整模型的超参数,包括学习率、正则化项、批量大小等,可以提高预测函数的泛化能力,从而提升模型的预测性能。
2. 特征工程合理的特征工程可以有助于提取有效的特征信息,从而改进预测函数的输入数据质量,提升模型的预测效果。
tensorflow常用函数及操作命令

1、tensorflow常用函数TensorFlow 将图形定义转换成分布式执行的操作, 以充分利用可用的计算资源(如CPU 或GPU。
一般你不需要显式指定使用CPU 还是GPU, TensorFlow 能自动检测。
如果检测到GPU, TensorFlow 会尽可能地利用找到的第一个GPU 来执行操作.并行计算能让代价大的算法计算加速执行,TensorFlow也在实现上对复杂操作进行了有效的改进。
大部分核相关的操作都是设备相关的实现,比如GPU。
下面是一些重要的操作/核:操作组操作Maths Add, Sub, Mul, Div, Exp, Log, Greater, Less, EqualArray Concat, Slice, Split, Constant, Rank, Shape, ShuffleMatrix MatMul, MatrixInverse, MatrixDeterminantNeuronal Network SoftMax, Sigmoid, ReLU, Convolution2D, MaxPoolCheckpointing Save, RestoreQueues and syncronizations Enqueue, Dequeue, MutexAcquire, MutexReleaseFlow control Merge, Switch, Enter, Leave, NextIterationTensorFlow的算术操作如下:操作描述tf.add(x, y, name=None) 求和tf.sub(x, y, name=None) 减法tf.mul(x, y, name=None) 乘法tf.div(x, y, name=None) 除法tf.mod(x, y, name=None) 取模tf.abs(x, name=None) 求绝对值tf.neg(x, name=None) 取负(y = -x).tf.sign(x, name=None) 返回符号y = sign(x) = -1 if x < 0; 0 if x == 0; 1 if x > 0.tf.inv(x, name=None) 取反tf.square(x, name=None) 计算平方(y = x * x = x^2).tf.round(x, name=None) 舍入最接近的整数# ‘a’ is [0.9, 2.5, 2.3, -4.4]tf.round(a) ==> [ 1.0, 3.0, 2.0, -4.0 ]tf.sqrt(x, name=None) 开根号(y = \sqrt{x} = x^{1/2}).tf.pow(x, y, name=None) 幂次方# tensor ‘x’ is [[2, 2], [3, 3]]# tensor ‘y’ is [[8, 16], [2, 3]]tf.pow(x, y) ==> [[256, 65536], [9, 27]]tf.exp(x, name=None) 计算e的次方tf.log(x, name=None) 计算log,一个输入计算e的ln,两输入以第二输入为底tf.maximum(x, y, name=None) 返回最大值(x > y ? x : y)tf.minimum(x, y, name=None) 返回最小值(x < y ? x : y)tf.cos(x, name=None) 三角函数cosinetf.sin(x, name=None) 三角函数sinetf.tan(x, name=None) 三角函数tantf.atan(x, name=None) 三角函数ctan张量操作Tensor Transformations•数据类型转换Casting操作描述tf.string_to_number(string_tensor, out_type=None, name=None) 字符串转为数字tf.to_double(x, name=’ToDouble’) 转为64位浮点类型–float64tf.to_float(x, name=’ToFloat’) 转为32位浮点类型–float32tf.to_int32(x, name=’ToInt32’) 转为32位整型–int32tf.to_int64(x, name=’ToInt64’) 转为64位整型–int64tf.cast(x, dtype, name=None) 将x或者x.values转换为dtype# tensor a is [1.8, 2.2], dtype=tf.floattf.cast(a, tf.int32) ==> [1, 2] # dtype=tf.int32•形状操作Shapes and Shaping操作描述tf.shape(input, name=None) 返回数据的shape# ‘t’ is [[[1, 1, 1], [2, 2, 2]], [[3, 3, 3], [4, 4, 4]]] shape(t) ==> [2, 2, 3]tf.size(input, name=None) 返回数据的元素数量# ‘t’ is [[[1, 1, 1], [2, 2, 2]], [[3, 3, 3], [4, 4, 4]]]]size(t) ==> 12tf.rank(input, name=None) 返回tensor的rank注意:此rank不同于矩阵的rank,tensor的rank表示一个tensor需要的索引数目来唯一表示任何一个元素也就是通常所说的“order”, “degree”或”ndims”#’t’ is [[[1, 1, 1], [2, 2, 2]], [[3, 3, 3], [4, 4, 4]]]# shape of tensor ‘t’ is [2, 2, 3]rank(t) ==> 3tf.reshape(tensor, shape, name=None) 改变tensor的形状# tensor ‘t’ is [1, 2, 3, 4, 5, 6, 7, 8, 9]# tensor ‘t’ has shape [9]reshape(t, [3, 3]) ==>[[1, 2, 3],[4, 5, 6],[7, 8, 9]]#如果shape有元素[-1],表示在该维度打平至一维# -1 将自动推导得为9:reshape(t, [2, -1]) ==>[[1, 1, 1, 2, 2, 2, 3, 3, 3],[4, 4, 4, 5, 5, 5, 6, 6, 6]]tf.expand_dims(input, dim, name=None) 插入维度1进入一个tensor中#该操作要求-1-input.dims()# ‘t’ is a tensor of shape [2]shape(expand_dims(t, 0)) ==> [1, 2]shape(expand_dims(t, 1)) ==> [2, 1]shape(expand_dims(t, -1)) ==> [2, 1] <= dim <= input.dims()•切片与合并(Slicing and Joining)操作描述tf.slice(input_, begin, size, name=None) 对tensor进行切片操作其中size[i] = input.dim_size(i) - begin[i]该操作要求0 <= begin[i] <= begin[i] + size[i] <= Di for i in [0, n]#’input’ is#[[[1, 1, 1], [2, 2, 2]],[[3, 3, 3], [4, 4, 4]],[[5, 5, 5], [6, 6, 6]]] tf.slice(input, [1, 0, 0], [1, 1, 3]) ==> [[[3, 3, 3]]]tf.slice(input, [1, 0, 0], [1, 2, 3]) ==>[[[3, 3, 3],[4, 4, 4]]]tf.slice(input, [1, 0, 0], [2, 1, 3]) ==>[[[3, 3, 3]],[[5, 5, 5]]]tf.split(split_dim, num_split, value, name=’split’) 沿着某一维度将tensor分离为num_split tensors # ‘value’ is a tensor with shape [5, 30]# Split ‘value’ into 3 tensors along dimension 1 split0, split1, split2 = tf.split(1, 3, value)tf.shape(split0) ==> [5, 10]tf.concat(concat_dim, values, name=’concat’) 沿着某一维度连结tensort1 = [[1, 2, 3], [4, 5, 6]]t2 = [[7, 8, 9], [10, 11, 12]]tf.concat(0, [t1, t2]) ==> [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]] tf.concat(1, [t1, t2]) ==> [[1, 2, 3, 7, 8, 9], [4, 5, 6, 10, 11, 12]] 如果想沿着tensor一新轴连结打包,那么可以:tf.concat(axis, [tf.expand_dims(t, axis) for t in tensors])等同于tf.pack(tensors, axis=axis)tf.pack(values, axis=0, name=’pack’) 将一系列rank-R的tensor打包为一个rank-(R+1)的tensor # ‘x’ is [1, 4], ‘y’ is [2, 5], ‘z’ is [3, 6]pack([x, y, z]) => [[1, 4], [2, 5], [3, 6]]# 沿着第一维packpack([x, y, z], axis=1) => [[1, 2, 3], [4, 5, 6]]等价于tf.pack([x, y, z]) = np.asarray([x, y, z])tf.reverse(tensor, dims, name=None) 沿着某维度进行序列反转其中dim为列表,元素为bool型,size等于rank(tensor) # tensor ‘t’ is[[[[ 0, 1, 2, 3],#[ 4, 5, 6, 7],#[ 8, 9, 10, 11]],#[[12, 13, 14, 15],#[16, 17, 18, 19],#[20, 21, 22, 23]]]]# tensor ‘t’ shape is [1, 2, 3, 4]# ‘dims’ is [False, False, False, True]reverse(t, dims) ==>[[[[ 3, 2, 1, 0],[ 7, 6, 5, 4],[ 11, 10, 9, 8]],[[15, 14, 13, 12],[19, 18, 17, 16],[23, 22, 21, 20]]]]tf.transpose(a, perm=None, name=’transpose’) 调换tensor的维度顺序按照列表perm的维度排列调换tensor顺序,如为定义,则perm为(n-1…0)# ‘x’ is [[1 2 3],[4 5 6]]tf.transpose(x) ==> [[1 4], [2 5],[3 6]]# Equivalentlytf.transpose(x, perm=[1, 0]) ==> [[1 4],[2 5], [3 6]] tf.gather(params, indices, validate_indices=None,name=None)合并索引indices所指示params中的切片tf.one_hot(indices, depth, on_value=None, off_value=None, axis=None, dtype=None, name=None) indices = [0, 2, -1, 1] depth = 3on_value = 5.0off_value = 0.0axis = -1#Then output is [4 x 3]: output =[5.0 0.0 0.0] // one_hot(0) [0.0 0.0 5.0] // one_hot(2) [0.0 0.0 0.0] // one_hot(-1) [0.0 5.0 0.0] // one_hot(1)矩阵相关运算操作描述tf.diag(diagonal, name=None) 返回一个给定对角值的对角tensor # ‘diagonal’ is [1, 2, 3, 4]tf.diag(diagonal) ==>[[1, 0, 0, 0][0, 2, 0, 0][0, 0, 3, 0][0, 0, 0, 4]]tf.diag_part(input, name=None) 功能与上面相反tf.trace(x, name=None) 求一个2维tensor足迹,即对角值diagonal之和tf.transpose(a, perm=None, name=’transpose’) 调换tensor的维度顺序按照列表perm的维度排列调换tensor顺序,如为定义,则perm为(n-1…0)# ‘x’ is [[1 2 3],[4 5 6]]tf.transpose(x) ==> [[1 4], [2 5],[3 6]]# Equivalentlytf.transpose(x, perm=[1, 0]) ==> [[1 4],[2 5], [3 6]]tf.matmul(a, b, transpose_a=False,transpose_b=False, a_is_sparse=False, 矩阵相乘tf.matrix_determinant(input, name=None)返回方阵的行列式tf.matrix_inverse(input, adjoint=None,name=None)求方阵的逆矩阵,adjoint 为True 时,计算输入共轭矩阵的逆矩阵tf.cholesky(input, name=None)对输入方阵cholesky 分解,即把一个对称正定的矩阵表示成一个下三角矩阵L 和其转置的乘积的分解A=LL^Ttf.matrix_solve(matrix, rhs, adjoint=None, name=None) 求解tf.matrix_solve(matrix, rhs, adjoint=None, name=None) matrix 为方阵shape 为[M,M],rhs 的shape 为[M,K],output 为[M,K] 复数操作 操作描述plex(real, imag, name=None)将两实数转换为复数形式# tensor ‘real’ is [2.25, 3.25] # tensor imag is [4.75, 5.75]plex(real, imag) ==> [[2.25 + 4.75j], [3.25 + 5.75j]] plex_abs(x, name=None)计算复数的绝对值,即长度。
conv1d函数

conv1d函数Conv1d函数卷积是深度学习模型中常用的操作之一,而在卷积神经网络中,卷积层则是整个模型中最为重要的一环。
在TensorFlow中,我们可以使用conv1d函数来构建卷积层。
一、conv1d函数的基本形式TensorFlow中的conv1d函数可以使用以下形式:```tf.nn.conv1d(input, filters, stride, padding, use_cudnn_on_gpu=None,data_format=None, name=None)```其中,- input:待卷积的输入数据。
它是一个4维的Tensor,形状为[batch_size, input_length, input_channels]。
- filters:卷积核。
它是一个4维的Tensor,形状为[filter_length,input_channels, output_channels]。
- stride:卷积核移动的步长。
它是一个长度为1的整数。
- padding:卷积的边界处理方式。
可以是"VALID"(有效边缘处理)或"SAME"(相同边缘处理)。
- use_cudnn_on_gpu:是否使用CUDA加速。
如果设为True,则使用CUDA加速;如果设为False,则不使用CUDA加速。
默认值是None。
- data_format:数据的格式。
可以是"NHWC"(表示样本数×高×宽×通道数)或"NCHW"(表示样本数×通道数×高×宽)。
默认值是None,表示使用"TWC"格式。
- name:操作的名称。
默认值是None。
二、使用conv1d函数构建卷积层在使用conv1d函数构建卷积层时,我们通常需要依次指定以下三个参数:1. 卷积核的数量```num_filters = 32```这里我们定义了卷积核的数量为32。
tensort view对应的函数

tensort view对应的函数摘要:一、引言二、张量视图的概念与作用三、Python中常用的张量视图函数1.TensorFlow中的张量视图函数2.PyTorch中的张量视图函数四、张量视图函数的实际应用与举例五、总结正文:一、引言在深度学习和人工智能领域,张量(Tensor)是处理多维数组的重要数据结构。
张量视图(Tensor View)则是在原有张量基础上,提供了一种更高效地操作和访问张量的方法。
本文将详细介绍张量视图的概念以及对应的函数,并通过实例演示其应用。
二、张量视图的概念与作用张量视图是张量的一种表示方式,可以看作是对张量的一种切片或者子集。
通过张量视图,我们可以更方便地对张量中的特定部分进行操作,而不必修改原始张量。
同时,张量视图可以有效地减少内存占用,提高计算效率。
三、Python中常用的张量视图函数1.TensorFlow中的张量视图函数在TensorFlow中,我们可以通过tf.Tensor.view()函数创建张量视图。
示例代码如下:```pythonimport tensorflow as tfa = tf.constant([[1, 2, 3], [4, 5, 6]])b = a.view([2, 3]) # 从2x3的张量视图```2.PyTorch中的张量视图函数在PyTorch中,我们可以通过torch.Tensor.view()函数创建张量视图。
示例代码如下:```pythonimport torcha = torch.tensor([[1, 2, 3], [4, 5, 6]])b = a.view(2, 3) # 从2x3的张量视图```四、张量视图函数的实际应用与举例假设我们有一个4x4的张量,我们想要提取其对角线上的元素,可以通过张量视图函数来实现。
```pythonimport tensorflow as tfa = tf.constant([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16]])b = a.view([4, 4])```通过上述代码,我们可以得到一个4x4的张量视图。
size_lookup函数的用法(一)

size_lookup函数的用法(一)Size_lookup函数的用法在深度学习中,我们常常需要将输入数据调整为指定的形状和尺寸。
而size_lookup函数则是一种常用的工具,在TensorFlow中被广泛应用于数据重塑和尺寸调整的场景。
本文将介绍size_lookup函数的用法,希望能对读者有所帮助。
什么是size_lookup函数?size_lookup函数是TensorFlow中的一个操作符,用于查询给定数据的形状和尺寸。
它可以将数据从一个形状转换为另一个形状,同时调整数据的尺寸和维度。
size_lookup函数常用于卷积神经网络、循环神经网络、自编码器等深度学习模型中,以帮助实现数据的重塑和尺寸调整。
size_lookup函数的语法size_lookup函数的语法比较简单,下面是它的基本语法:tf.size_lookup(input, output_shape)其中,input表示待重塑的数据;output_shape表示重塑后的形状。
size_lookup函数的应用下面通过几个例子,来演示size_lookup函数的应用。
例子1:数据重塑假设我们有一个形状为[batch_size, height, width, channels]的数据,现在需要将它重塑为[batch_size, height*width, channels]的形状。
这时,可以使用size_lookup函数来方便地实现数据的重塑。
input= tf.placeholder(tf.float32, shape=[None, 28, 28, 3])output_shape = tf.constant([1,-1,3])output = tf.reshape(input, tf.size_lookup(input, output_shape))在上面的例子中,我们首先定义了一个输入数据input和一个目标形状output_shape,然后使用size_lookup函数查询出目标形状对应的尺寸,并将input按照目标尺寸进行重塑。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
tf函数
TensorFlow 将图形定义转换成分布式执行的操作, 以充分利用可用的计算资源(如 CPU 或 GPU。
一般你不需要显式指定使用 CPU 还是 GPU, TensorFlow 能自动检测。
如果检测到 GPU, TensorFlow 会尽可能地利用找到的第一个 GPU 来执行操作.
并行计算能让代价大的算法计算加速执行,TensorFlow也在实现上对复杂操作进行了有效的改进。
大部分核相关的操作都是设备相关的实现,比如GPU。
下面是一些重要的操作/核:
TensorFlow的算术操作如下:
张量操作Tensor Transformations
矩阵相关运算
复数操作
归约计算(Reduction)
分割(Segmentation)
序列比较与索引提取(Sequence Comparison and Indexing)
神经网络(Neural Network)
— tf.nn.rnn简要介绍—
cell: 一个RNNCell实例
inputs: 一个shape为[batch_size, input_size]的tensor
initial_state: 为RNN的state设定初值,可选
sequence_length:制定输入的每一个序列的长度,size为[batch_size],值范围为[0, T)的int型数据
其中T为输入数据序列的长度
@
@针对输入batch中序列长度不同,所设置的动态计算机制
@对于在时间t,和batch的b行,有
(output, state)(b, t) = ? (zeros(cell.output_size), states(b, sequence_length(b) - 1)) : cell(input(b, t), state(b, t - 1))。