【发布时间】:2021-08-15 01:30:08
【问题描述】:
我正在尝试使用 mnist 数据集来模拟 LeNet,
我正在做以下事情,
import tensorflow as tf
import tensorflow_datasets as tfds
from tensorflow.keras import layers, models
from tensorflow.keras.utils import plot_model
from tensorflow.keras.optimizers import SGD
import matplotlib.pyplot as plt
import numpy as np
# Import dataset
(train_ds, test_ds), info_ds = tfds.load('mnist', split=['train','test'],
as_supervised = True,
with_info=True,
batch_size = -1)
train_images, train_labels = tfds.as_numpy(train_ds)
test_images, test_labels = tfds.as_numpy(test_ds)
# Split test to obtain validation dataset
val_size = int(len(test_images) * 0.8)
val_images, test_images = test_images[:val_size], test_images[val_size:]
val_labels, test_labels = test_labels[:val_size], test_labels[val_size:]
# Normalizing images between 0 to 1
train_images, test_images = train_images / 255.0, test_images / 255.0
# Create the model
model = models.Sequential()
model.add(layers.Conv2D(filters=6, kernel_size=(5,5), activation='relu', input_shape=(32,32,3)))
model.add(layers.MaxPooling2D(pool_size=(2,2)))
model.add(layers.Conv2D(filters=16, kernel_size=(5,5), activation='relu'))
model.add(layers.MaxPooling2D(pool_size=(2,2)))
model.add(layers.Flatten())
model.add(layers.Dense(120,activation='relu'))
model.add(layers.Dense(84,activation='relu'))
model.add(layers.Dense(10,activation='softmax'))
# Compile
opt = SGD(learning_rate=0.1)
model.compile(optimizer=opt,
loss='categorical_crossentropy',
metrics=['accuracy'])
# Fit
history = model.fit(train_images, train_labels,
epochs=10, batch_size=128,
validation_data=(val_images, val_labels),
verbose=2)
合适的时候,我得到这个错误:
ValueError:层顺序的输入 0 与层不兼容:输入形状的预期轴 -1 具有值 3,但接收到形状为 (None, 28, 28, 1) 的输入
这意味着我必须重塑 mi 图像?
我想也许我必须像这样将标签转换为分类标签
from tensorflow.keras.utils import to_categorical
train_labels = to_categorical(train_labels)
test_labels = to_categorical(test_labels)
但随后又出现同样的错误,
ValueError: 层序贯_1 的输入 0 与层不兼容:输入形状的预期轴 -1 具有值 3,但接收到形状为 (None, 28, 28, 1) 的输入
有人可以帮我理解吗?
非常感谢!
【问题讨论】:
-
看看这个:input_shape=(32,32,3),和你的错误信息相比,你发现这里有什么问题吗?
-
Fok,这是因为我也尝试过 Cifar10 数据集,看看是不是灰度的问题...
标签: python tensorflow machine-learning keras deep-learning