python - 根据数据集动态设置图层单位
问题描述
我尝试根据数据集更改最后一层的单位大小。这是我的代码的抽象,但它不起作用。
class cnn_model:
num_classes = 1
model.add(layers.Conv2D(128, (3, 3), activation='relu'))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(256, (3, 3), activation='relu'))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Dense(num_classes, activation='softmax'))
@staticmethod
def train_two():
cnn_mod = cnn_model
cnn_mod.num_classes = 2
model = cnn_mod.model
@staticmethod
def train_three():
cnn_mod = cnn_model
cnn_mod.num_classes = 3
model = cnn_mod.model
解决方案
当您实例化一个新类时,只需将类数作为参数传递CNNModel
:
import tensorflow as tf
from tensorflow.keras import layers
class CNNModel:
def __init__(self, num_classes=2):
self.num_classes = num_classes
self.model = tf.keras.models.Sequential()
self.model.add(layers.Conv2D(128, (3, 3), activation='relu'))
self.model.add(layers.MaxPooling2D((2, 2)))
self.model.add(layers.Conv2D(256, (3, 3), activation='relu'))
self.model.add(layers.MaxPooling2D((2, 2)))
self.model.add(layers.Dense(self.num_classes, activation='softmax'))
cnnmodel = CNNModel(num_classes=3)
kerasmodel = cnnmodel.model
print(cnnmodel.num_classes) # 3
推荐阅读
- angular - Angular:将 switch 语句的案例重构为组件而不更改生成的 DOM
- r - 使用 R 模拟海平面变化
- linux - 从 Windows Jenkins 从属到 Linux 的 SSH
- android - pdf文件查看在android中遇到问题
- c# - C# 六工 ImageSharp 运行时错误 System.Memory 4.0.1.0 Visual Studio 2019
- javascript - Three.js 中 HTML 中的数据纹理
- python - 为什么 ScyPy 的集成被称为“quad”?
- android - Flutter - FCM:如何将后台消息存储到 SQLite
- c# - SQLite Xamarin - 选择每个 ID 的最高日期(使用 Linq 表达式)
- excel - 我想将 3 个工作表从一个工作簿移动到另一个工作簿。我尝试了很多宏,但目前正在使用这个