python - Kaggle 运行代码单元,然后无错误地结束
问题描述
我目前正在将 kaggle 的笔记本用于卷积神经网络,并使用以下代码运行了一个单元:
model = Sequential()
model.add(Conv2D(32, kernel_size=(3,3), activation='relu', input_shape=(28, 28, 1)))
model.add(MaxPooling2D(2,2))
model.add(BatchNormalization())
model.add(Conv2D(64, kernel_size=(3,3), activation='relu'))
model.add(MaxPooling2D(2,2))
model.add(BatchNormalization())
model.add(Dropout(0.1))
model.add(Dense(10, activation='softmax'))
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
model.fit(train_images, train_labels, epochs=5)
单元运行一秒钟然后突然停止并且不训练,但是,它也没有给我错误消息。它刚刚结束。当我在上面的单元格上运行以下 conv 神经网络结构时,它工作得非常好,并显示了时代和训练:
model = Sequential()
model.add(Flatten(input_shape=(28, 28)))
model.add(Dropout(0.05))
model.add(Dense(128, activation='relu'))
model.add(Dense(10, activation='softmax'))
model_optimizer = Adam(lr=0.001)
model.compile(optimizer=model_optimizer, loss='sparse_categorical_crossentropy', metrics=['accuracy'])
history = model.fit(train_images, train_labels, epochs=10)
关于第一个单元格块不起作用的具体原因或任何想法?跟图层有关系吗?我注意到当我没有 Conv2D / Maxpooling 层时,单元格似乎运行良好。
解决方案
您需要使用之前将获得的Convolutional
矩阵层压平,如下所示:Flatten layer
Dense layer
model.add(Dropout(0.1))
model.add(Flatten()) <------add Flatten layer
model.add(Dense(10, activation='softmax'))
推荐阅读
- wso2 - WSO2 身份服务器 - 违反密码策略时出现内部错误 18013
- java - log4j 错误 java.lang.NoSuchMethodError: org.apache.log4j.spi.LoggingEvent.getTimestamp()J
- c# - 为什么将项目添加到 ObservableCollection 时我的视图没有更新
- java - int[][] 表示灰度图像,如何将有符号值转换为无符号值
- html - 我的导航栏和它下面的 div 之间无法解释的垂直间隙
- android - 在 react native 中调用本地文件时出错,在 android 中出现错误-“无法加载空 url”
- android - 如何为 google play store 请求的新要求创建 64 位 libpdfview2.so 库?
- java - ThreadLocalRandom 的重复结果
- c# - 使用 Refit,如何调试反序列化错误?
- javascript - 如何隐藏 3D 旋转木马左侧的所有内容?