tensorflow - 使用tensorflow和keras在python中用CNN替换MLP代码
问题描述
我用 MLP 尝试了下面的代码,现在我需要用具有以下结构的 CNN 8 层替换这个 MLP 代码:3×3×32 Convolutional → 3×3×64 Convolutional → 2×2 MaxPool → Dropout → Flatten → 1 × 128全连接→Dropout→128×10 全连接→Softmax。
//declear path to your mnist data folder
img_path = 'c:/kaggleMNISTdata/trainingSet/trainingSet'
//get the path list using the path object
image_paths = list(paths.list_images(img_path))
//apply our function
image_list, label_list = load(image_paths, verbose=10000)
// binarize the labels
lb = LabelBinarizer()
label_list = lb.fit_transform(label_list)
// split data into training and test set
X_train, X_test, y_train, y_test = train_test_split(image_list,
label_list,
test_size=0.1,
random_state=42)
data = list(zip(image_list, label_list))
random.shuffle(data)
class SimpleMLP:
@staticmethod
def build(shape, classes):
model = Sequential()
model.add(Dense(200, input_shape=(shape,)))
model.add(Activation("relu"))
model.add(Dense(200))
model.add(Activation("relu"))
model.add(Dense(classes))
model.add(Activation("softmax"))
return model
我试过以下
def build(shape, classes):
model = Sequential()
model.add(Conv2D(200, input_shape=(shape,)))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Flatten(1))
model.add(Dropout(1))
model.add(Dense(200))
model.add(Activation("softmax"))
return model
这是对的吗?
解决方案
用你给定的架构试试这个:
cnn_model = Sequential()
cnn_model.add(Conv2D(32, (3, 3), input_shape=(28, 28, 1)))
cnn_model.add(Conv2D(64, (3, 3)))
cnn_model.add(MaxPooling2D((2, 2)))
cnn_model.add(Dropout(0.5))
cnn_model.add(Flatten())
cnn_model.add(Dense(128))
cnn_model.add(Dropout(0.5))
cnn_model.add(Dense(classes))
cnn_model.add(Activation("softmax"))
推荐阅读
- cordova - 使用 cordova 从图库中获取 Base64 图像
- matlab - 分配 3D 矩阵时的尺寸问题
- javascript - Edge:打开新窗口选项卡时出现 Script70 错误
- c# - 如何使用自定义属性覆盖属性设置器?
- node.js - 带有 Express 的 Node.JS,脚本符合但不创建 http 服务器
- c++ - SDL 访问 SDL_Surface 的像素数据
- android - 在 retrofit2 界面中检索 SharedPreferences
- amazon-web-services - CloudFormation 仅在条件有效时创建堆栈,如果无效则显示自定义错误消息
- mongodb - 在 Windows 8.1 中运行 mongodb 时文件丢失问题
- android - Xamarin.Forms AppCenter 推送通知