为什么模型的层形状是(1000)而不是Keras中的(1000)?

时间:2019-07-27 06:25:15

标签: python keras deep-learning

model = models.Sequential()
model.add(layers.Dense(64, activation='relu', input_shape=(1000,)))

示例代码在此处。我认为那是numpy的工作方式,但是当我尝试使用numpy时,两个定义都给出相同的结果。

1 个答案:

答案 0 :(得分:1)

Keras中的input_shape自变量采用tuple个对象中的int个,这些对象定义了图层或模型的输入尺寸。有关元组here的更多信息。

  

元组是一系列不可变的Python对象。

为更清楚地理解,请研究以下代码:

>>> x = ( 1 )
>>> y = ( 1 , )
>>> x[0]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'int' object is not subscriptable
>>> y[0]
1
>>> print( x )
1
>>> print( y )
(1,)
>>>

对象( 1 )被视为单个Python int对象。因此,我们无法像在Python list中那样对它进行下标或访问项目。而( 1 , )表示将创建具有单个元素的tuple。该元组可以像列表一样被下标。

另外,请注意Python打印两个对象的方式不同。

  

Keras input_shape参数需要一个可下标的对象,其中每个维度的大小都可以存储为整数。

因此,我们使用( 1000 , )代替( 1000 )