【发布时间】:2018-02-22 13:55:10
【问题描述】:
我正在尝试对 MNIST 数据库执行常规分类,但使用随机裁剪的数字。 图像按以下方式裁剪:随机删除第一个/最后一个和/或行/列。
我想使用使用 Keras(和 Tensorflow 后端)的卷积神经网络来执行卷积,然后执行通常的分类。
输入的大小可变,我无法让它工作。
这是我如何裁剪数字
import numpy as np
from keras.utils import to_categorical
from sklearn.datasets import load_digits
digits = load_digits()
X = digits.images
X = np.expand_dims(X, axis=3)
X_crop = list()
for index in range(len(X)):
X_crop.append(X[index, np.random.randint(0,2):np.random.randint(7,9), np.random.randint(0,2):np.random.randint(7,9), :])
X_crop = np.array(X_crop)
y = to_categorical(digits.target)
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X_crop, y, train_size=0.8, test_size=0.2)
这是我要使用的模型的架构
from keras.layers import Dense, Dropout
from keras.layers.convolutional import Conv2D
from keras.models import Sequential
model = Sequential()
model.add(Conv2D(filters=10,
kernel_size=(3,3),
input_shape=(None, None, 1),
data_format='channels_last'))
model.add(Dense(128, activation='relu'))
model.add(Dropout(0.2))
model.add(Dense(10, activation='softmax'))
model.compile(loss='categorical_crossentropy', optimizer='sgd', metrics=['accuracy'])
model.summary()
model.fit(X_train, y_train, epochs=100, batch_size=16, validation_data=(X_test, y_test))
有人知道如何在我的神经网络中处理可变大小的输入吗?
以及如何进行分类?
【问题讨论】:
标签: python machine-learning neural-network deep-learning keras