LightningModule приводит к тому, что переменная модели становится None по ссылке сразу после назначенияPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 LightningModule приводит к тому, что переменная модели становится None по ссылке сразу после назначения

Сообщение Anonymous »

Как возможно, что переменная поля становится None сразу после строки присваивания?
В частности, печатается следующий код
CLIPTokenizerFast NoneType CLIPTextModelWithProjection
при запуске _setup_txt_encoder
self.txt_encoder должна быть той же переменной, что и txt_encoder, но при доступе она извлекается как NoneTypeПохоже, что проблема вызвана LightningModule, потому что если я удалю его из наследования класса, проблем не будет.
from transformers import AutoTokenizer, PreTrainedTokenizer, PreTrainedTokenizerFast, CLIPTextModelWithProjection
from typing import Optional
from pytorch_lightning import LightningModule

class Foo:
def _setup_txt_encoder(self, clip_txt_model_name: str):
print('loading text tokenizer and encoder')
tokenizer = AutoTokenizer.from_pretrained(clip_txt_model_name, clean_up_tokenization_spaces=True)
txt_encoder = CLIPTextModelWithProjection.from_pretrained(clip_txt_model_name).requires_grad_(False)
self.tokenizer, self.txt_encoder = tokenizer, txt_encoder
self.txt_encoder = txt_encoder
print(type(self.tokenizer).__name__, type(self.txt_encoder).__name__, type(txt_encoder).__name__)
return tokenizer, txt_encoder
tokenizer: Optional[PreTrainedTokenizer|PreTrainedTokenizerFast] = None
txt_encoder: Optional[CLIPTextModelWithProjection] = None
class Bar(LightningModule, Foo):
def __init__(self, clip_txt_model_name='laion/CLIP-ViT-bigG-14-laion2B-39B-b160k'):
super().__init__()
if self.tokenizer is None or self.txt_encoder is None:
self._setup_txt_encoder(clip_txt_model_name)

test = Bar()


Подробнее здесь: https://stackoverflow.com/questions/791 ... t-after-as
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»