gpt4 book ai didi

tensorflow - 层密集需要 1 个输入,但它收到 2 个输入张量,我该如何更改它

转载 作者:行者123 更新时间:2023-12-04 13:32:55 25 4
gpt4 key购买 nike

所以我是一个初学者,刚接触 tensorflow2 和 keras,当我偶然发现以下错误时,我只是在玩弄并尝试制作一些模型:

Traceback (most recent call last):
File "/home/arch_poppin/dev/AI/reviews/rev.py", line 7, in <module>
x = layers.Dense(8, activation='relu')([input1, input2])
File "/usr/lib/python3.8/site-packages/tensorflow/python/keras/engine/base_layer.py", line 930, in __call__
return self._functional_construction_call(inputs, args, kwargs,
File "/usr/lib/python3.8/site-packages/tensorflow/python/keras/engine/base_layer.py", line 1068, in _functional_construction_call
outputs = self._keras_tensor_symbolic_call(
File "/usr/lib/python3.8/site-packages/tensorflow/python/keras/engine/base_layer.py", line 801, in _keras_tensor_symbolic_call
return self._infer_output_signature(inputs, args, kwargs, input_masks)
File "/usr/lib/python3.8/site-packages/tensorflow/python/keras/engine/base_layer.py", line 841, in _infer_output_signature
self._maybe_build(inputs)
File "/usr/lib/python3.8/site-packages/tensorflow/python/keras/engine/base_layer.py", line 2647, in _maybe_build
input_spec.assert_input_compatibility(
File "/usr/lib/python3.8/site-packages/tensorflow/python/keras/engine/input_spec.py", line 204, in assert_input_compatibility
raise ValueError('Layer ' + layer_name + ' expects ' +
ValueError: Layer dense expects 1 input(s), but it received 2 input tensors. Inputs received: [<tf.Tensor 'Placeholder:0' shape=(None,) dtype=float32>, <tf.Tensor 'Placeholder_1:0' shape=(None,) dtype=float32>].
如何让我的密集层接受前两个层的输出作为输入?我的代码
如下:
X1 = tf.constant([2, 3, 4, 5, 6, 7])
X2 = tf.constant([2, 3, 4, 5, 6, 7])
yTrain = tf.constant([4, 6, 8, 10, 12, 14])

input1 = keras.Input(shape=(X1.shape[1:]))
input2 = keras.Input(shape=(X2.shape[1:]))
x = layers.Dense(8, activation='relu')([input1, input2])
outputs = layers.Dense(2)(x)
mlp = keras.Model(input1, input2, outputs)

mlp.compile(loss='mean_squared_error',
optimizer='adam', metrics=['accuracy'])

mlp.fit(X1, X2, yTrain, batch_size=1, epochs=10, validation_split=0.2,
shuffle=True)

mlp.evaluate(X1, X2, yTrain)
```

最佳答案

您必须使用 concatenate层以提供多个输入。建议阅读本教程 - Models with multiple inputs and outputs .还要注意我是如何在 mlp.fit 中传递输入的和 mlp.evaluate .
你必须像下面这样修改你的代码 -

import numpy as np
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers

X1 = tf.constant([2, 3, 4, 5, 6, 7])
X2 = tf.constant([2, 3, 4, 5, 6, 7])
yTrain = tf.constant([4, 6, 8, 10, 12, 14])

input1 = keras.Input(shape=(1,))
input2 = keras.Input(shape=(1,))

x = layers.concatenate([input1, input2])
x = layers.Dense(8, activation='relu')(x)
outputs = layers.Dense(2)(x)
mlp = keras.Model([input1, input2], outputs)

mlp.summary()

mlp.compile(loss='mean_squared_error',
optimizer='adam', metrics=['accuracy'])

mlp.fit([X1, X2], yTrain, batch_size=1, epochs=10, validation_split=0.2,
shuffle=True)

mlp.evaluate([X1, X2], yTrain)
输出 -
Model: "functional_5"
__________________________________________________________________________________________________
Layer (type) Output Shape Param # Connected to
==================================================================================================
input_16 (InputLayer) [(None, 1)] 0
__________________________________________________________________________________________________
input_17 (InputLayer) [(None, 1)] 0
__________________________________________________________________________________________________
concatenate_3 (Concatenate) (None, 2) 0 input_16[0][0]
input_17[0][0]
__________________________________________________________________________________________________
dense_8 (Dense) (None, 8) 24 concatenate_3[0][0]
__________________________________________________________________________________________________
dense_9 (Dense) (None, 2) 18 dense_8[0][0]
==================================================================================================
Total params: 42
Trainable params: 42
Non-trainable params: 0
__________________________________________________________________________________________________
Epoch 1/10
4/4 [==============================] - 0s 32ms/step - loss: 36.3828 - accuracy: 0.0000e+00 - val_loss: 113.8439 - val_accuracy: 0.0000e+00
Epoch 2/10
4/4 [==============================] - 0s 5ms/step - loss: 35.9418 - accuracy: 0.0000e+00 - val_loss: 112.5230 - val_accuracy: 0.0000e+00
Epoch 3/10
4/4 [==============================] - 0s 5ms/step - loss: 35.4931 - accuracy: 0.0000e+00 - val_loss: 111.2055 - val_accuracy: 0.0000e+00
Epoch 4/10
4/4 [==============================] - 0s 5ms/step - loss: 35.1113 - accuracy: 0.0000e+00 - val_loss: 109.8443 - val_accuracy: 0.0000e+00
Epoch 5/10
4/4 [==============================] - 0s 6ms/step - loss: 34.6126 - accuracy: 0.0000e+00 - val_loss: 108.5272 - val_accuracy: 0.0000e+00
Epoch 6/10
4/4 [==============================] - 0s 5ms/step - loss: 34.1876 - accuracy: 0.0000e+00 - val_loss: 107.2023 - val_accuracy: 0.0000e+00
Epoch 7/10
4/4 [==============================] - 0s 6ms/step - loss: 33.7342 - accuracy: 0.0000e+00 - val_loss: 105.8807 - val_accuracy: 0.0000e+00
Epoch 8/10
4/4 [==============================] - 0s 6ms/step - loss: 33.2854 - accuracy: 0.0000e+00 - val_loss: 104.5553 - val_accuracy: 0.0000e+00
Epoch 9/10
4/4 [==============================] - 0s 6ms/step - loss: 32.8268 - accuracy: 0.0000e+00 - val_loss: 103.2337 - val_accuracy: 0.0000e+00
Epoch 10/10
4/4 [==============================] - 0s 6ms/step - loss: 32.3614 - accuracy: 0.0000e+00 - val_loss: 101.9115 - val_accuracy: 0.0000e+00
1/1 [==============================] - 0s 1ms/step - loss: 55.3572 - accuracy: 0.0000e+00
[55.35719299316406, 0.0]

关于tensorflow - 层密集需要 1 个输入,但它收到 2 个输入张量,我该如何更改它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63982116/

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