簡體   English   中英

在 Tensorflow 2.x 中我們不需要指定輸入形狀嗎?

[英]Is in Tensorflow 2.x we aren't need to specify the input shape?

我剛剛閱讀了本頁中的官方教程。 創建模型的代碼示例如下:

class MyModel(Model):
  def __init__(self):
    super(MyModel, self).__init__()
    self.conv1 = Conv2D(32, 3, activation='relu')
    self.flatten = Flatten()
    self.d1 = Dense(128, activation='relu')
    self.d2 = Dense(10, activation='softmax')

  def call(self, x):
    x = self.conv1(x)
    x = self.flatten(x)
    x = self.d1(x)
    return self.d2(x)

# Create an instance of the model
model = MyModel()

我的問題是,為什么在上面的代碼中我們不需要在第一層(Conv2D)中指定輸入形狀? 是否有任何官方文件提到這種行為?

因為如果我閱讀有關Conv Layer的官方文檔,它會說:

當將此層用作模型中的第一層時,提供關鍵字參數 input_shape(整數元組,不包括樣本軸),例如 input_shape=(128, 128, 3) 對於 data_format="channels_last" 中的 128x128 RGB 圖片

一切都按預期工作。

無論輸入形狀如何,卷積都可以作為一種操作。 只是輸入的通道需要匹配。 您可以在 tf.nn.conv2d 中看到此行為按預期工作。 (這是您的代碼片段正在使用的內容)

現在,您正在鏈接對 keras.conv2d 的引用,這會強制用戶指定輸入形狀以使代碼更具可讀性並“驗證”用戶輸入。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM