какая польза и когда использовать @classmethod в python?

Вы инициализируете переменную весов нулями, поэтому оптимизатор не может вычислить градиенты. Кроме того, 0.5 чрезвычайно высока для скорости обучения спуска градиента.

Попробуйте инициализировать переменную вашего веса случайным образом:

W = tf.get_variable("W", shape=[784, 10], initializer=tf.random_uniform_initializer())
b = tf.get_variable("b", shape=[10], initializer=tf.zeros_initializer())

И установите скорость обучения на что-то порядка 0.0005.

Есть также другие инициализаторы , которые вы можете предпочесть вместо этого.

Учебное видео для Tensorboard охватывает точный сценарий инициализации нулевого веса. Вы уже пишете сводку в своем коде, это может быть хорошей идеей, чтобы просмотреть это видео, чтобы посмотреть, как его использовать, чтобы помочь отлаживать.

1
задан Francisco 19 January 2019 в 04:31
поделиться

1 ответ

В питоне есть 3 вида методов:

  • Метод экземпляра
  • Метод класса
  • Статический метод
class Person():
    species='homo_sapiens' # This is class variable
    def __init__(self, name, age):
        self.name = name # This is instance variable
        self.age = age

    def show(self):
        print('Name: {}, age: {}.'.format(self.name, date.today().year - self.age))

    @classmethod
    def create_with_birth_year(cls, name, birth_year):
        return cls(name, date.today().year - birth_year)

    @classmethod
    def print_species(cls):
        print('species: {}'.format(cls.species))

    @staticmethod
    def get_birth_year(age):
        return date.today().year - age


class Teacher(Person):
    pass

[1118 ] 1) Метод экземпляра ( show ) нуждается в экземпляре и должен использовать self в качестве первого параметра. Он может получить доступ к экземпляру через self и повлиять на состояние экземпляра.

2) Метод класса ( create_with_birth_year и print_species ) не нуждается в экземпляре и использует cls для доступа к классу и влияния на состояние класса. Мы можем использовать @classmethod для создания фабрики, например:

navy = Person.create_with_birth_year('Navy Cheng', 1989)
navy.show()

и , эта фабрика может быть унаследована :

zhang = Teacher.create_with_birth_year('zhang', 1980)
print(type(zhang))

и метод класса может использоваться переменная класса доступа:

Person.print_species()

3) Статическому методу ( get_birth_year ) не требуется специальный параметр ( self или cls [ 1113]) и изменит любое состояние класса или экземпляра. Он может использовать некоторую вспомогательную функцию для класса.

0
ответ дан Navy Cheng 19 January 2019 в 04:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: