gpt4 book ai didi

python - Keras:ValueError:检查模型输入时出错:您传递给模型的 Numpy 数组列表不是模型预期的大小

转载 作者:行者123 更新时间:2023-12-04 14:14:53 27 4
gpt4 key购买 nike

我刚刚在构建网络时遇到了问题,无法正确输入,张量的形状与我在项目中需要的形状相同。但我一直收到这个错误。 ValueError:检查模型输入时出错:您传递给模型的 Numpy 数组列表不是模型预期的大小。预期会看到 2 个数组,用于输入 ['input_1', 'input_2'],但得到了以下 1 个数组的列表:[array([[[[0, 0, 0], [0, 0, 0], [0, 0, 0]],

     [[0, 0, 0],
[0, 0, 0],
[0, 0, 0]],

[[0, 0, 0],
[0, 0, 0],
[0, 0, 0]]],

这是我的代码

x1_train = [[[[0, 0, 0],[0, 0, 0],[0, 0, 0]],[[0, 0, 0],[0, 0, 0],[0, 0, 0]],[[0, 0, 0],[0, 0, 0],[0, 0, 0]]],[[[0, 0, 0],[0, 0, 0],[0, 0, 0]],[[0, 0, 0],[0, 0, 0],[0, 0, 0]],[[0, 0, 0],[0, 0, 0],[0, 0, 0]]]]
y_train = [[0.3]]

# define two sets of inputs
inputA = tf.keras.Input(shape=(3,3,3))
inputB = tf.keras.Input(shape=(3,3,3))
# the first branch operates on the first input
x = tf.keras.layers.Dense(8, activation="relu")(inputA)
x = tf.keras.layers.Dense(4, activation="relu")(x)
x = tf.keras.Model(inputs=inputA, outputs=x)
# the second branch opreates on the second input
y = tf.keras.layers.Dense(64, activation="relu")(inputB)
y = tf.keras.layers.Dense(32, activation="relu")(y)
y = tf.keras.layers.Dense(4, activation="relu")(y)
y = tf.keras.Model(inputs=inputB, outputs=y)
# combine the output of the two branches
combined = tf.keras.layers.concatenate([x.output, y.output])
# apply a FC layer and then a regression prediction on the
# combined outputs
z = tf.keras.layers.Dense(2, activation="relu")(combined)
z = tf.keras.layers.Dense(1, activation="sigmoid")(z)
# our model will accept the inputs of the two branches and
# then output a single value
model = tf.keras.models.Model(inputs=[x.input, y.input], outputs=z)

model.compile(optimizer='adam',
loss='mean_absolute_percentage_error', #mean_absolute_percentage_error
metrics=['accuracy'])

model.fit(x=[x_train, x1_train], y=y_train, epochs = 1)````


I get the error message
ValueError: Error when checking model input: the list of Numpy arrays that you are passing to your model is not the size the model expected. Expected to see 2 array(s), for inputs ['input_1', 'input_2'] but instead got the following list of 1 arrays:

最佳答案

您的输入数组必须是 NumPy 数组,而不是列表。所以你可以:

import numpy as np

x1_train = np.array([
[[[0, 0, 0],[0, 0, 0],[0, 0, 0]],
[[0, 0, 0],[0, 0, 0],[0, 0, 0]],
[[0, 0, 0],[0, 0, 0],[0, 0, 0]]],
[[[0, 0, 0],[0, 0, 0],[0, 0, 0]],
[[0, 0, 0],[0, 0, 0],[0, 0, 0]],
[[0, 0, 0],[0, 0, 0],[0, 0, 0]]]])
x_train = x1_train
y_train = np.array([[0.3], [0.3]])

然后您将不会再收到该错误。但是,训练仍然失败,因为 y_train (num_examples x 1) 中标签的形状与模型输出的形状 (num_examples x 3) 不匹配x 3 x 1),但这是一个不同的问题。

关于python - Keras:ValueError:检查模型输入时出错:您传递给模型的 Numpy 数组列表不是模型预期的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61268508/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com