猿问

TensorFlow - ValueError:形状 (3, 1) 和 (4, 3) 不兼容

我是 DL 的新手,当我适合我的模型时,我遇到了这个错误


ValueError: Shapes (3, 1) and (4, 3) are incompatible


数据集:


Features: [0.22222222 0.625      0.06779661 0.04166667], Target: [1 0 0]

Features: [0.16666667 0.41666667 0.06779661 0.04166667], Target: [1 0 0]

Features: [0.11111111 0.5        0.05084746 0.04166667], Target: [1 0 0]

Features: [0.08333333 0.45833333 0.08474576 0.04166667], Target: [1 0 0]

Features: [0.19444444 0.66666667 0.06779661 0.04166667], Target: [1 0 0]

模型:


def build_fc_model():

  fc_model = tf.keras.Sequential([

      tf.keras.layers.Dense(4, activation=tf.nn.softmax),

      tf.keras.layers.Dense(4, activation=tf.nn.softmax),

      tf.keras.layers.Dense(3, activation=tf.nn.softmax),

  ])

  return fc_model```


model.fit 错误


model = build_fc_model()

model.compile(optimizer=tf.keras.optimizers.Adam(learning_rate=1e-1), loss='categorical_crossentropy', metrics=['accuracy'])


BATCH_SIZE = 10

EPOCHS = 5


model.fit(dataset, batch_size=BATCH_SIZE, epochs=EPOCHS)


谢谢你的帮助


宝慕林4294392
浏览 169回答 1
1回答

阿波罗的战车

在您的代码中,build_fc_model中缺少InputLayer,因此请检查一下:import tensorflow as tfimport numpy as npdef build_fc_model():  fc_model = tf.keras.Sequential([      tf.keras.layers.InputLayer((4,)),      tf.keras.layers.Dense(4, activation=tf.nn.softmax),      tf.keras.layers.Dense(4, activation=tf.nn.softmax),      tf.keras.layers.Dense(3, activation=tf.nn.softmax),  ])  return fc_modeldata = np.array([[0.22222222, 0.625,      0.06779661, 0.04166667],                  [0.16666667, 0.41666667, 0.06779661, 0.04166667],                 [0.11111111, 0.5 ,       0.05084746, 0.04166667],                  [0.08333333, 0.45833333, 0.08474576, 0.04166667],                  [0.19444444, 0.66666667, 0.06779661, 0.04166667]])target = np.array([[1, 0 ,0],                   [1, 0 ,0],                   [1, 0 ,0],                   [1, 0 ,0],                   [1, 0 ,0]])model = build_fc_model()model.compile(optimizer=tf.keras.optimizers.Adam(learning_rate=1e-1), loss='categorical_crossentropy', metrics=['accuracy'])BATCH_SIZE = 1EPOCHS = 5model.fit(data, target, batch_size=BATCH_SIZE, epochs=EPOCHS)输出:Epoch 1/55/5 [==============================] - 0s 991us/step - loss: 0.8198 - accuracy: 0.6000Epoch 2/55/5 [==============================] - 0s 603us/step - loss: 0.1590 - accuracy: 1.0000Epoch 3/55/5 [==============================] - 0s 593us/step - loss: 0.0372 - accuracy: 1.0000Epoch 4/55/5 [==============================] - 0s 597us/step - loss: 0.0131 - accuracy: 1.0000Epoch 5/55/5 [==============================] - 0s 680us/step - loss: 0.0064 - accuracy: 1.0000
随时随地看视频慕课网APP

相关分类

Python
我要回答