У меня есть следующий код pytorch:
model = models.squeezenet1_1(pretrained=True)
num_classes = 2
model.classifier = nn.Sequential (
nn.Dropout(0.1),
nn.Conv2d(512, num_classes, kernel_size= (1,1), stride= (1,1)),
nn.ReLU(),
nn.AvgPool2d(kernel_size= 13, stride= 1, padding= 0)
)
model.num_classes = num_classes
criterion = nn.CrossEntropyLoss()
optimizer = optim.Adam(model.classifier.parameters(), lr=0.001)
, и id хотел бы преобразовать этот код в тензорный поток, поскольку мне нужно использовать тензорный поток, а не pytorch. Я поискал кое-что и не совсем понял, как это сделать.
Я смог получить предварительно обученную модель Squeez eNet благодаря пакету keras_squeez enet (хотя это вызывает некоторые будущие предупреждения об устаревании с numpy при загрузке модели), но как тогда я могу изменить классификатор, оптимизатор и количество классов для модели, которую я загрузил, как я сделал в pytorch?
Я использую тензорный поток 1.14.0 и keras 2.3.1 (по какой-то причине мне не удалось запустить тензорный поток 2)
Также я использую только ЦП из-за прав сеанса
РЕДАКТИРОВАТЬ благодаря @Albert:
Прямо сейчас я просто загрузил модель из пакета, который я взял из https://github.com/rcmalli/keras-squeezenet, и я установил свои разные папки изображений, которые Я буду использовать:
datagen = ImageDataGenerator()
# load and iterate training dataset
train_it = datagen.flow_from_directory('path to my training', class_mode='binary', batch_size=32)
# load and iterate validation dataset
val_it = datagen.flow_from_directory('path to my validation', class_mode='binary', batch_size=32)
# load and iterate test dataset
test_it = datagen.flow_from_directory('path to my test', class_mode='binary', batch_size=32)
model = SqueezeNet(weights='imagenet')
Я обнаружил, что вы должны использовать model.compile, чтобы указать оптимизатор и потерю с помощью keras, поэтому я думаю, что это может выглядеть примерно так, поправьте меня, если я ошибаюсь:
model.compile(loss='BinaryCrossentropy',optimizer='Adam',metrics=['accuracy'])
Если это правильно, мне просто нужно сделать
model.classifier = nn.Sequential (
nn.Dropout(0.1),
nn.Conv2d(512, num_classes, kernel_size= (1,1), stride= (1,1)),
nn.ReLU(),
nn.AvgPool2d(kernel_size= 13, stride= 1, padding= 0)
)
model.num_classes = num_classes
в tenserflow / keras; как я могу это сделать?