Standalone-DeepLearning icon indicating copy to clipboard operation
Standalone-DeepLearning copied to clipboard

과제 1 관련 질문 있습니다.

Open lockedandloadad opened this issue 6 years ago • 5 comments

과제를 해보려 했는데 감이 잘 안잡힙니다. 일단 class LinearModel(nn.Module): def init(self): super(LinearModel, self).init() self.linear = nn.Linear(in_features=784, out_features=10, bias=True) self.hidden_unit = nn.Linear(in_features=784, out_features=10, bias=True) self.hidden_layer = nn.Linear(in_features=784, out_features=10, bias=True)

def forward(self, x):
    x = self.linear(x)
    return x
    
def hidden(self, y, z):
    y = self.hidden_unit
    z = self.hidden_layer
    return y,z

이렇게 변수(?)를 만들어야 될 것 같애서 만들었는데요. 변수를 조정하는 방법을 잘 모르겠고요, self.linear = nn.Linear(in_features=784, out_features=10, bias=True) 여기에서 괄호 안에 쓴 것들처럼 self.hidden_unit 도 써보려고 했는데 뭘 써야 하는지 잘 모르겠습니다. torch.nn.modules.linear 라고 구글링을 해봤는데요, 무슨 말인지 몰라서 질문 올립니다~ 혹시 방향 정도 조언을 해주실 수 있으신가요?

또, 제가 프로그래밍 기초 수업 외에는 프로그래밍 경험이 아예 없는데요, 어떤 부분을 더 공부 해야 하는지도 알려주실 수 있으신가요?

lockedandloadad avatar Jan 23 '19 11:01 lockedandloadad

def hidden(self, y, z):
    y = self.hidden_unit
    z = self.hidden_layer
    return y, z

위 코드에서 self.hidden_unit은 아마 hidden layer 내부에 unit 갯수, 즉 node 갯수를 의미하신거 같은데, self.hidden_layer 변수의 의도를 잘 모르겠어서 완벽한 답변 드리지 못하는 점 죄송합니다. hidden layer의 unit을 LinearModel 생성시에 정해주기 위해서는 LinearModel의 생성자 (constructor)인 __init__ 함수의 인자로 hidden_unit을 전달해 주신 뒤, nn.LInear object 생성시에 전달해 주시면 됩니다. 코드로 짜면 다음과 같이 되겠네요.

class LinearModel(nn.Module):
    def __init__(self, hidden_unit):    # 생성자인 __init__ 함수에 (앞 뒤 __ 에 주의) hidden_unit을 인자로 전달.
        self.linear1 = nn.Linear(in_features=784, out_features=hidden_unit, bias=True)    # hidden layer의 unit 수가 함수의 인자로 전달받은 hidden_unit이 되도록 명시.
        self.linear2 = nn.Linear(in_features=hidden_unit, out_features=10, bias=True)    # hidden layer와 output layer (10 units) 간의 연결

    def forward(self, x):
        x = self.linear1(x)
        x = self.linear2(x)
        return x

위와 같이 model을 디자인 하신 뒤 실제 사용시에는 model = LinearModel(1024)와 같이 hidden unit을 명시해 주시면 되겠습니다.

SeungsuKim avatar Jan 23 '19 13:01 SeungsuKim

또한 python 기본 문법의 관한 내용의 경우 오픈 톡방에 올려드린 점프 투 파이썬 웹 사이트를 참고하여 공부하시면 되겠습니다.

SeungsuKim avatar Jan 23 '19 13:01 SeungsuKim

감사합니다~^^

lockedandloadad avatar Jan 23 '19 16:01 lockedandloadad

cannot assign module before Module.init() call init() missing 1 required positional argument: 'hidden_unit' 올려주신 대로 한 번 해 봤는데, 오류가 떠서 조금씩 손봐도 둘 중에 하나가 계속 뜨네요.ㅠㅠㅜ Class를 잘 몰라서 뭔가 실수하나봐요. 내일 더 여쭤봐도 되나요?

lockedandloadad avatar Jan 23 '19 17:01 lockedandloadad

혹시 해결되셨나요?

heartcored98 avatar Jan 26 '19 11:01 heartcored98