[英]Create a tensorflow dataset based on a "multi-input"
從包含多個X
數組的 numpy 數組創建tf.data.Dataset
object。
如您所見,model 包含兩個不同的輸入:
x_train
)ts_train
) 我要解決的問題是時間序列預測。
x_train
包含一個特征。
ts_train
包含三個特征,分別代表錯誤的年、月、日。
我可以毫無問題地擬合/評估/預測 model。
fit
示例:
model.fit(
[x_train, ts_train],
y_train,
batch_size=1024,
epochs=2000,
validation_data=([x_test, ts_test], y_test),
callbacks=callbacks,
)
predict
示例:
model.predict([x_test[0].reshape(1, window, 1), ts_test[0].reshape(1, window, 3)])
但是,我不明白如何將 rappresent 我的數據集的numpy
數組轉換為 tensorflow 數據集。
使用以下代碼:
tf.data.Dataset.from_tensor_slices([x_train, ts_train], y_train)
我將收到以下錯誤:
ValueError: Can't convert non-rectangular Python sequence to Tensor.
如何將我的2 x -> 1 y
轉換為tf.data.Dataset
?
也許嘗試使用這樣的元組:
import numpy as np
import tensorflow as tf
x_train = np.random.random((50, 730, 1))
ts_train = np.random.random((50, 730, 3))
y_train = np.random.random((50, 5))
ds = tf.data.Dataset.from_tensor_slices(((x_train, ts_train), y_train))
for (x, t), y in ds.take(1):
print(x.shape, t.shape, y.shape)
(730, 1) (730, 3) (5,)
這是一個示例 model:
input1 = tf.keras.layers.Input((730, 1))
input2 = tf.keras.layers.Input((730, 3))
x = tf.keras.layers.Flatten()(input1)
y = tf.keras.layers.Flatten()(input2)
outputs = tf.keras.layers.Concatenate()([x, y])
outputs = tf.keras.layers.Dense(5)(outputs)
model = tf.keras.Model([input1, input2], outputs)
model.compile(optimizer='adam', loss='mse')
model.fit(ds.batch(10), epochs=5)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.