tensorflow ValueError:层“value”的输入0与层不兼容:预期min_ndim=2,找到ndim=1

qojgxg4l  于 2022-11-16  发布在  其他
关注(0)|答案(1)|浏览(168)

我是tensorflow 的新手,当我尝试修改模型结构时,我将一个形状为(None,1)的Tensor'r'转换为一维Tensor,并使用tf. reform(r,[4,]),然后将其输入到稠密层中。一维Tensor的形状为(4,),而稠密层的input_shape设置为(4,),并出现错误。ValueError:层“值”的输入0与层不兼容:预期的min_ndim=2,找到的ndim=1。收到的完整图形:(4,)如果你能帮我解决这个问题,我将不胜感激我的tensorflow版本是2. 10. 0

nx7onnlm

nx7onnlm1#

您应该以(samples or batch, data shape)的形式传递数据。因此,输入数据至少有2个维度。

model = tf.keras.models.Sequential()
model.add(tf.keras.Input(shape=(4,)))
model.add(tf.keras.layers.Dense(32, activation='relu'))
model.add(tf.keras.layers.Dense(32))
x=tf.random.normal((4,))
y=tf.random.uniform((4,),0,1)
model.compile('rmsprop','binary_crossentropy',)
model.fit(x,y)

上面的代码引发了以下值错误

Input 0 of layer "dense_2" is incompatible with the layer: expected min_ndim=2, found ndim=1. Full shape received: (None,)

将输入形状更改为(批处理、数据形状)后,模型工作正常。

model = tf.keras.models.Sequential()
model.add(tf.keras.Input(shape=(4,)))
model.add(tf.keras.layers.Dense(32, activation='relu'))
model.add(tf.keras.layers.Dense(32))
# The input data should be of shape (batch_size, data shape)
x=tf.random.normal((120,4,))
y=tf.random.uniform((120,),0,1)
model.compile('rmsprop','binary_crossentropy',)
model.fit(x,y)

输出量:

4/4 [==============================] - 2s 3ms/step - loss: 4.2611
<keras.callbacks.History at 0x7fa2e901db90>

相关问题