AlexNet.py 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. from keras.models import Sequential
  2. from keras.layers import Conv2D, MaxPooling2D, Dense, Flatten, Dropout, ReLU, AveragePooling2D
  3. # 使用 Keras 重新定义 AlexNet 模型
  4. def create_model(input_shape=(224, 224, 3), num_classes=10):
  5. model = Sequential([
  6. # 特征提取部分
  7. Conv2D(64, kernel_size=(11, 11), strides=(4, 4), padding="same", input_shape=input_shape),
  8. ReLU(),
  9. MaxPooling2D(pool_size=(3, 3), strides=(2, 2)),
  10. Conv2D(192, kernel_size=(5, 5), padding="same"),
  11. ReLU(),
  12. MaxPooling2D(pool_size=(3, 3), strides=(2, 2)),
  13. Conv2D(384, kernel_size=(3, 3), padding="same"),
  14. ReLU(),
  15. Conv2D(256, kernel_size=(3, 3), padding="same"),
  16. ReLU(),
  17. Conv2D(256, kernel_size=(3, 3), padding="same"),
  18. ReLU(),
  19. MaxPooling2D(pool_size=(3, 3), strides=(2, 2)),
  20. # 全局平均池化部分
  21. AveragePooling2D(pool_size=(6, 6)),
  22. # 分类部分
  23. Flatten(),
  24. Dropout(0.5),
  25. Dense(4096),
  26. ReLU(),
  27. Dropout(0.5),
  28. Dense(4096),
  29. ReLU(),
  30. Dense(num_classes, activation='softmax')
  31. ])
  32. return model