【发布时间】:2021-03-21 18:59:27
【问题描述】:
我正在设计一个分类器,它在输入处接受 10 个值 - 信号(通过处理 MNIST 数据集的像素,标准化 0-1 获得),并输出数字类别。 10 值信号对于每个数字都是唯一的,因此可以进行分类。
num_classes=10
y_train=to_categorical(y_train,num_classes)
y_test=to_categorical(y_test,num_classes)
x_train=(60000,10,1,1)
y_train=(60000,10)
x_test=(10000,10,1,1)
y_test=(10000,10)
代码如下
input_img = Input(shape=(10,1,1))
x = Flatten()(input_img)
x = Dense(100, activation='relu')(x)
x = Dense(100, activation='relu')(x)
decoded = Dense(10, activation='softmax')(x)
autoencoder=Model(input_img,decoded)
autoencoder.compile(optimizer='adam',loss='categorical_crossentropy',metrics=['accuracy'])
history=autoencoder.fit(x_train, y_train,
epochs=30,
batch_size=32,
verbose=1,
shuffle=True,
validation_data=(x_test, y_test))
请建议可以进行哪些更改。
【问题讨论】:
-
y_train 在适合之前有什么形状?
y_train=(60000,10)这个?或者你把这个发给y_train = to_categorical(y_train, num_classes),然后喂到合适的位置? -
y_train 在应用 to_cat 后具有形状 (60000,10) 并发送到 fit
-
这可能是你使用了错误的损失函数。当您制作 one-hot 编码向量时,请使用
categorical_cross_entropy损失函数。 -
同意@M.Innat。见categoricalcrossentropy和sparsecategoricalcrossentropy
标签: python-3.x tensorflow machine-learning keras neural-network