当前位置:   article > 正文

深度学习——一些概念的理解_inputshape(1,1001)

inputshape(1,1001)

介绍

学习tensorflow和深度学习的时候,一些概念总是不清不楚

input_shape

在keras中,数据是以张量的形式表示的,张量的形状称之为shape,即每一阶的个数,表示从最外层向量逐步到达最底层向量的降维解包过程。用tuple(元组)表示。
比如,一个一阶的张量[1,2,3]的shape是(3,);一个二阶的张量[[1,2,3],[4,5,6]]的shape是(2,3);一个三阶的张量[[[1],[2],[3]],[[4],[5],[6]]]的shape是(2,3,1)。

input_shape就是指输入张量的shape

# as first layer in a Sequential model
model = Sequential()
model.add(Reshape((3, 4), input_shape=(12,)))
# now: model.output_shape == (None, 3, 4)
# note: `None` is the batch dimension
 
# as intermediate layer in a Sequential model
model.add(Reshape((6, 2)))
# now: model.output_shape == (None, 6, 2)
 
# also supports shape inference using `-1` as dimension
model.add(Reshape((-1, 2, 2)))
# now: model.output_shape == (None, 3, 2, 2)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

例如,考虑一个含有32个样本的batch,每个样本都是10个向量组成的序列,每个向量长为16,则其输入维度为(32,10,16),其不包含batch大小的input_shape为(10,16)

input_dim

input_dim输入的尺寸,或者维度

input_dim = input_shape(input_dim,)
input_dim, input_length = input_shape(input_length,input_dim)
例如,input_dim=784,说明输入是一个784维的向量,这相当于一个一阶的张量,它的shape就是(784,)。因此,input_shape=(784,)。

batch

Batch Size定义:一次训练所选取的样本数。
Batch Size的大小影响模型的优化程度和速度。同时其直接影响到GPU内存的使用情况,假如你GPU内存不大,该数值最好设置小一点。


Batch Size从小到大的变化对网络影响
1、没有Batch Size,梯度准确,只适用于小样本数据库
2、Batch Size=1,梯度变来变去,非常不准确,网络很难收敛。
3、Batch Size增大,梯度变准确,
4、Batch Size增大,梯度已经非常准确,再增加Batch Size也没有用

注意:Batch Size增大了,要到达相同的准确度,必须要增大epoch。


Batch_Size的取值
在这里插入图片描述
全批次(蓝色)

如果数据集比较小,我们就采用全数据集。全数据集确定的方向能够更好的代表样本总体,从而更准确的朝向极值所在的方向。

注:对于大的数据集,我们不能使用全批次,因为会得到更差的结果。

迷你批次(绿色)

选择一个适中的Batch_Size值。就是说我们选定一个batch的大小后,将会以batch的大小将数据输入深度学习的网络中,然后计算这个batch的所有样本的平均损失,即代价函数是所有样本的平均。

随机(Batch_Size等于1的情况)(红色)

每次修正方向以各自样本的梯度方向修正,横冲直撞各自为政,难以达到收敛。


在深度学习中,一般采用SGD训练,即每次训练在训练集中取batchsize个样本训练

epoch

中文翻译为时期。
一个时期=所有训练样本的一个正向传递和一个反向传递。

举个例子
有一个2000个训练样本的数据集。将2000个样本分成大小为500的batch,那么完成一个epoch需要4个iteration。

Dense(稠密)

dense是kereas里的全连层函数

# as first layer in a sequential model:
model = Sequential()
model.add(Dense(32, input_shape=(16,))) # Dense的第一个参数 units 是输出空间的维度
# now the model will take as input arrays of shape (*, 16)
# and output arrays of shape (*, 32)
 
# after the first layer, you don't need to specify
# the size of the input anymore:
model.add(Dense(32))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

参考

关于kereas、TensorFlow里的input_shape、shape的数据维度损失函数的定义方法:https://blog.csdn.net/yangdashi888/article/details/80452156
如何理解keras中的shape/input_shape:https://blog.csdn.net/x_ym/article/details/77728732
神经网络中Batch Size的理解:https://blog.csdn.net/qq_34886403/article/details/82558399
神经网络中Epoch、Iteration、Batchsize相关理解和说明:https://microstrong.blog.csdn.net/article/details/78597738?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1.no_search_link&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1.no_search_link

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/正经夜光杯/article/detail/901663
推荐阅读
相关标签
  

闽ICP备14008679号