import numpy as np
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers
train_data = np.array(
[[ 0.045964252, 0.08585282, 0.056468535, 0.087974496],
[ 0.06128449, 0.027692182, 0.01929527, 0.027361592],
[ 0.076604135, 0., 0., 0. ],
[-0.15014096, -0.6869674, -0.6869674, 0. ]], np.float32)
train_label= np.array(
[[0.08585282 ],
[0.027692182],
[0. ],
[0.036714412]], np.float32)
mydataset = tf.data.Dataset.from_tensor_slices((train_data, train_label))
myinput = tf.keras.layers.Input(shape=(4, 1), ragged=True)
output = tf.keras.layers.Dense(1)(myinput)
model = tf.keras.models.Model(inputs=myinput, outputs=output)
model.compile(
optimizer='sgd',
loss='mse',
metrics=[tf.keras.metrics.MeanSquaredError()])
print("model.fit mydatasetelement_spec:\n", mydataset.element_spec)
# (TensorSpec(shape=(4,), dtype=tf.float32, name=None), TensorSpec(shape=(1,), dtype=tf.float32, name=None))
history = model.fit(
mydataset,
epochs=4,
steps_per_epoch=4,
verbose=0)
如何通过修正模型输入层来消除警告?
<块引用>警告:tensorflow:模型是用形状 (None, 4, 1) 构建的,用于 输入张量("Placeholder_1:0", shape=(None, 4, 1), dtype=float32), 但它在形状不兼容的输入上被调用 (4, 1, 1)
我似乎无法让 tf.keras.layers.Input 接受来自 model.fit 的输入而不抛出警告。我不想更改我的数据(重塑、挤压等)。我想将输入保留为具有特征和标签的数据集。我想调整模型以接受我的数据输入。
答案 0 :(得分:0)
您可以通过以下方式修复它:
myinput = tf.keras.layers.Input(shape=(1,), ragged=True)
注意 Dense 层的输入形状应为以下形式:(batch_size, input_size)