这个错误目前发现有两种情况:
第一种就是字面意思 你的shape没有对齐,
(2000, 64, 64, 1)
(2000, 10)
比如上面两个形状的第一维是样本数量,(64,64,1)是图片维度。10是分类。要求2000=2000.就是x,y配对。很好理解。
但是当你检查之后发现没问题还报这个错。
第二种情况:
你的损失函数使用有问题。
损失函数使用要求:
问题出在您的目标形状上,并且与正确选择合适的损失函数有关。你有两种可能性:
1.可能性:如果你有一个一维整数编码的目标,你可以sparse_categorical_crossentropy
用作损失函数
n_class = 3
n_features = 100
n_sample = 1000
X = np.random.randint(0,10, (n_sample,n_features))
y = np.random.randint(0,n_class, n_sample)
inp = Input((n_features,))
x = Dense(128, activation='relu')(inp)
out = Dense(n_class, activation='softmax')(x)
model = Model(inp, out)
model.compile(loss='sparse_categorical_crossentropy',optimizer='adam',metrics=['accuracy'])
history = model.fit(X, y, epochs=3)
2.可能性:如果您对目标进行单热编码以获得2D形状(n_samples,n_class),则可以使用categorical_crossentropy
n_class = 3
n_features = 100
n_sample = 1000
X = np.random.randint(0,10, (n_sample,n_features))
y = pd.get_dummies(np.random.randint(0,n_class, n_sample)).values
inp = Input((n_features,))
x = Dense(128, activation='relu')(inp)
out = Dense(n_class, activation='softmax')(x)
model = Model(inp, out)
model.compile(loss='categorical_crossentropy',optimizer='adam',metrics=['accuracy'])
history = model.fit(X, y, epochs=3)
换成categorical_crossentropy试试。
如果解决了你的问题,请点个免费的赞。