• 카테고리

    질문 & 답변
  • 세부 분야

    딥러닝 · 머신러닝

  • 해결 여부

    미해결

ANN으로 Mnist 숫자분류기 코드질문

22.03.07 10:08 작성 조회수 176

0

강의잘 듣고있습니다..! 익숙치 않은 코드라서 체화하려고 제맛대로? 코딩하려다 오류가 나서 질문드립니다..

기본적으로  강의는 keras subclassing& softmax regression구현 편에 있는 코드를 따라했는데요. 거기다가 hidden_layer만 몇개 추가하고 돌렸더니 

when subclassing the 'Model' class, you should implement a 'call()' method. 라고 오류가 발생합니다.. subclassing 한부분에 def call()해주었는데 말이죠 ..

 

아래는 구글 코랩 링크입니다. 문제점이 뭘까요?

https://colab.research.google.com/drive/1m0oMUAcsPZVn9NOFXJ5OunZAIKPYDGLc?usp=sharing

답변 1

답변을 작성해보세요.

0

안녕하세요~. 반갑습니다.

 

아래와 같이 입력하면 잘 동작할것입니다.

 

class SoftMaxRegression(tf.keras.Model):

  def __init__(self):

    super(SoftMaxRegression, self).__init__()

    self.hidden1 = tf.keras.layers.Dense(50, kernel_initializer = initializer_by_random_normal_stddev(),

                                    bias_initializer = initializer_by_random_normal_stddev())

    self.hidden2 = tf.keras.layers.Dense(50, kernel_initializer = initializer_by_random_normal_stddev(),

                                    bias_initializer = initializer_by_random_normal_stddev())

    self.output_layer = tf.keras.layers.Dense(10, kernel_initializer= initializer_by_random_normal_stddev(),

                                        bias_initializer = initializer_by_random_normal_stddev())

 

  def call(self,x):

    x = self.hidden1(x)

    x= self.hidden2(x)

    logits = self.output_layer(x)

    

    return logits

 

기존 코드의 버그는 아래와 같습니다.

 

1. def __init__ 앞에는 띄어쓰기를 2칸으로 하고 def call 부분 앞에는 띄어쓰기를 4칸으로 함 (파이썬은 띄어쓰기에 민감한 언어라서 조심해야만합니다. 둘다 2칸으로 맞추거나 둘다 4칸으로 맞추시면 됩니다.)

2. output_layer 부분에 오타(ouput_layer)

 

그럼 좋은 하루 되세요~.

감사합니다.