【问题标题】:ValueError: Exception encountered when calling layer "sequential_5" (type Sequential)ValueError:调用层“sequential_5”时遇到异常(类型Sequential)
【发布时间】:2021-11-15 06:44:13
【问题描述】:

我正在学习这门课程: TensorFlow Developer Certificate in 2022: Zero to Mastery

这是以下代码:


# Set random seed
tf.random.set_seed(42)

# Create some regression data
X_regression = np.arange(0, 1000, 5)
y_regression = np.arange(100, 1100, 5)

# Split it into training and test sets
X_reg_train = X_regression[:150]
X_reg_test = X_regression[150:]
y_reg_train = y_regression[:150]
y_reg_test = y_regression[150:]

# Setup random seed
tf.random.set_seed(42)

# Recreate the model
model_3 = tf.keras.Sequential([
  tf.keras.layers.Dense(100),
  tf.keras.layers.Dense(10),
  tf.keras.layers.Dense(1)
])

# Change the loss and metrics of our compiled model
model_3.compile(loss=tf.keras.losses.mae, # change the loss function to be regression-specific
                optimizer=tf.keras.optimizers.Adam(),
                metrics=['mae']) # change the metric to be regression-specific

# Fit the recompiled model
model_3.fit(X_reg_train, y_reg_train, epochs=100)


我收到以下错误:

为什么会出现以下错误,我该如何解决?

【问题讨论】:

    标签: python tensorflow machine-learning keras deep-learning


    【解决方案1】:

    您只需为数据添加第二个维度。它必须是 (batch_size, features)。您可以使用np.expand_dims 将您的输入从 (batch_size,) 更改为 (batch_size, features):

    import tensorflow as tf
    import numpy as np
    
    tf.random.set_seed(42)
    
    # Create some regression data
    X_regression = np.expand_dims(np.arange(0, 1000, 5), axis=1)
    y_regression = np.expand_dims(np.arange(100, 1100, 5), axis=1)
    
    # Split it into training and test sets
    X_reg_train = X_regression[:150]
    X_reg_test = X_regression[150:]
    y_reg_train = y_regression[:150]
    y_reg_test = y_regression[150:]
    
    tf.random.set_seed(42)
    
    # Recreate the model
    model_3 = tf.keras.Sequential([
      tf.keras.layers.Dense(100),
      tf.keras.layers.Dense(10),
      tf.keras.layers.Dense(1)
    ])
    
    # Change the loss and metrics of our compiled model
    model_3.compile(loss=tf.keras.losses.mae, # change the loss function to be regression-specific
                    optimizer=tf.keras.optimizers.Adam(),
                    metrics=['mae']) # change the metric to be regression-specific
    
    # Fit the recompiled model
    model_3.fit(X_reg_train, y_reg_train, epochs=100)
    

    【讨论】:

    • 我还尝试将X_reg_trainndim 1 重塑为ndim 2。这很有效。那么输出会改变吗?
    • 没有。在您的情况下,您仍将输出 (batch_size, 1)。
    猜你喜欢
    • 2022-06-27
    • 2021-12-28
    • 1970-01-01
    • 2023-02-09
    • 1970-01-01
    • 1970-01-01
    • 2022-07-18
    • 2022-08-19
    • 1970-01-01
    相关资源
    最近更新 更多