【问题标题】:how should I code LSTM layer with Keras and Tensorflow 2.4.1?我应该如何使用 Keras 和 Tensorflow 2.4.1 对 LSTM 层进行编码?
【发布时间】:2022-02-02 17:57:16
【问题描述】:

我正在学习Deep Learning with Python Book by François Chollet book chapter 10.2.5我使用tensorflow 2.4.1

这是 LSTM 天气预报的代码:

inputs = keras.Input(shape=(sequence_length, raw_data.shape[-1]))
x = layers.LSTM(16)(inputs)
outputs = layers.Dense(1)(x)
model = keras.Model(inputs, outputs)

callbacks = [
    keras.callbacks.ModelCheckpoint("jena_lstm.keras",
                                    save_best_only=True)
]
model.compile(optimizer="rmsprop", loss="mse", metrics=["mae"])
history = model.fit(train_dataset,
                    epochs=10,
                    validation_data=val_dataset,
                    callbacks=callbacks)

model = keras.models.load_model("jena_lstm.keras")
print(f"Test MAE: {model.evaluate(test_dataset)[1]:.2f}")

当我尝试将输入传递给 LSTM 层时,我遇到以下错误:

--> 852 引发 NotImplementedError( 853 “无法将符号张量 ({}) 转换为 numpy 数组。” 854 "此错误可能表明您正在尝试将张量传递给"

NotImplementedError:无法转换符号张量 (lstm_6/strided_slice:0) 到一个 numpy 数组。此错误可能表明 您正在尝试将张量传递给 NumPy 调用,这不是 支持

​我对 Dense 层或 conv2D 层没有任何问题,我无法通过 LSTM 层的输入。 任何想法为什么?

输入是来自 keras 的 jena_climate_2009_2016.csv.zip 数据集。像这样构建:

train_dataset = tf.keras.preprocessing.timeseries_dataset_from_array(
    raw_data[:-delay],
    targets=temperature[delay:],
    sampling_rate=sampling_rate,
    sequence_length=sequence_length,
    shuffle=True,
    batch_size=batch_size,
    start_index=0,
    end_index=num_train_samples)

【问题讨论】:

    标签: tensorflow keras lstm tensorflow2.0 keras-layer


    【解决方案1】:

    我通过将 numpy 从 1.21 降级到 1.19 来解决问题

    【讨论】:

      猜你喜欢
      • 2019-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-10
      • 1970-01-01
      • 1970-01-01
      • 2020-05-16
      相关资源
      最近更新 更多