如何将使用SqueezeNet预训练模型的pytorch代码转换为张量流

时间:2020-05-29 10:10:28

标签: python tensorflow keras deep-learning pytorch

我有以下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喜欢这样做,因为我需要使用tensorflow而不是pytorch将此代码转换为tensorflow。我已经搜索了一些东西,但不太了解该怎么做。

多亏了keras_squeezenet软件包,我已经能够得到一个经过预训练的SqueezeNet模型(尽管当我加载模型时它会引起一些numpy的未来弃用警告),但是那我如何才能更改Classifier,Optimizer和类的数量我像在pytorch中一样加载的模型?

我使用tensorflow 1.14.0和keras 2.3.1(由于某种原因我无法启动tensorflow 2)

由于会话权限,我也只在使用CPU

编辑感谢@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中;我该怎么办?

0 个答案:

没有答案
相关问题