【问题标题】:Keras LSTM input error: Failed to convert NumPy array to TensorKeras LSTM 输入错误:无法将 NumPy 数组转换为张量
【发布时间】:2021-11-26 23:40:57
【问题描述】:

我有一个数据集,其中每个样本都是可变数量的时间步长,并且在每个时间步长内有准确的 5 个浮点数。我想训练一个预测单个值的 RNN/LSTM:

sample_1 = [[1.0, 2.0, 3.0, 4.0, 5.0], [5.0, 4.0, 3.0, 2.0, 1.0].....]

train_x = [sample_1, sample_2.....] train_y = [123.0, 456.0.....]

我的 Sequential Keras LSTM 模型如下所示:

model = Sequential()
model.add(LSTM(units=4, dropout=0.5))
model.add(Dense(units=4, activation='relu'))
model.add(Dense(1))
model.compile(loss='mean_absolute_error',
              optimizer=Adam())

训练:

_ = model.fit(
    train_x,
    train_y,
    validation_data=(validation_x, validation_y),
    shuffle=True,
    batch_size=16,
    epochs=10,
    verbose=2)

但是,我立即收到以下错误:

“ValueError:无法将 NumPy 数组转换为张量(不支持的对象类型列表)。”

我的模型设置有什么明显错误吗?我可以简单地使用列表的嵌套列表作为输入示例吗?

【问题讨论】:

标签: python tensorflow machine-learning keras lstm


【解决方案1】:

由于错误消息建议将您的输入数据转换为张量

工作示例代码

import numpy as np
sample_1 = [[1.0, 2.0, 3.0, 4.0, 5.0], [5.0, 4.0, 3.0, 2.0, 1.0]]
sample_2 = [[6.0, 7.0, 8.0, 9.0, 10.0], [10.0, 9.0, 8.0, 7.0, 6.0]]
sample1 = tf.convert_to_tensor(sample_1, dtype=tf.float32)
sample2 = tf.convert_to_tensor(sample_2, dtype=tf.float32)

train_x = [sample1, sample2] 
train_y = [123.0, 456.0]

train_x = np.asarray(train_x)
train_y = np.asarray(train_y)
from tensorflow.keras import Sequential
model = Sequential()
model.add(tf.keras.layers.LSTM(units=4, dropout=0.5))
model.add(tf.keras.layers.Dense(units=4, activation='relu'))
model.add(tf.keras.layers.Dense(1))
model.compile(loss='mean_absolute_error',
              optimizer=tf.keras.optimizers.Adam())

model = model.fit(train_x,train_y,batch_size=16,epochs=2,verbose=2)

【讨论】:

    猜你喜欢
    • 2021-09-11
    • 2021-12-17
    • 2021-06-26
    • 2021-05-31
    • 2021-09-23
    • 1970-01-01
    • 1970-01-01
    • 2019-03-19
    • 2021-08-25
    相关资源
    最近更新 更多