[Question] Transfer learning với nhiều model

deep-learning

#1

Em muốn tạo 1 network được concat từ 2 inceptionv4 net, đầu vào của 2 inceptionv4 là 2 input khác nhau, làm sao để e khởi tạo đc pretrained weight cho cả 2 inceptionv4 đó, sau đó train lại toàn bộ ? Cái em đang vướng mắc ở đây là khi load weight chỉ load đc cho 1 net inceptionv4 và trả về session, em chưa biết làm sao để load đc cho 2 net r concat lại để train lại tổng thể. Mong mọi người trả lời giúp :slight_smile:


#2

nếu anh dùng lại model (không thay đổi gì) thì có thể sử dụng assign để load model (tương tự như restore thông thường, hơi thủ công tí), để ghép vào chung một session.


#3

mình đã có thử assign hoặc restore nhưng ngay khi assign hay restore 1 pretrained model thì ngay lập tức trả về session của 1 net k thể load 2 net đồng thời, mà mình muốn train lại cùng lúc 2 net với weigth ở 2 net thay đổi khác nhau. Bạn có idea nào k.


#4

:smiley: key là tensorflow Hub nhé


#5

Bạn dùng framework nào?

Mình dùng Pytorch nên làm việc này rất đơn giản. Sau đây là một ví dụ:

class MyModel(nn.Module):
    def __init__(self ):
        super().__init__()
        self.inception1 = torchvision.models.inceptionv4()
        self.inception2 = torchvision.models.inceptionv4()

    def forward(self, x1, x2):
        out1 = self.inception1(x1)
        out2 = self.inception2(x2)
        out = torch.cat([out1, out2])
        return out
        
# Khoi tao model
model = MyModel()

Khi bạn save/load model thì các weights của các model InceptionV4 cũng được save/load lại nhé.

Chúc bạn thành công


#6

That 's what I need, thanks :smile:


#7

mình dùng tensorflow, mình thử tensor hub đc r, thank bạn :blush:


#8

Chúc mừng bạn. Bạn mark dấu tích ở câu trả lời để đánh dấu làm solution nhé.


#9

A cho e hỏi là đoạn code nào trên tf hub load được 2 file cùng một lúc của tf ạ? Em tìm mãi không thấy!