Задайте единицы измерения для слоя в соответствии с набором данных. - PullRequest
1 голос
/ 07 апреля 2019

Я пытаюсь изменить размер блока для последнего слоя в соответствии с набором данных. Это абстракция моего кода, но он не работает.

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

1 Ответ

1 голос
/ 07 апреля 2019

Просто передайте число классов в качестве аргумента при создании нового 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   

Я бы также предложил вам прочитать Соглашения об именах и Отступ в PEP8 .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...