Я работаю над задачей сегментации изображений и пытаюсь использовать предварительно обученный кодер Swin Transformer Large (Swin-L) для магистрали извлечения признаков. Код отлично работает на процессоре в Colab. Однако при переключении на TPU выдается ошибка, показанная ниже. Код:
from tensorflow.keras import layers, Model, Input
from tfswin import SwinTransformerLarge224
def load_swin_encoder(input_shape=(512, 512, 3)):
# Load pre-trained Swin-L model
swin_encoder = SwinTransformerLarge224(include_top=False, weights='imagenet',
input_shape=input_shape)
# Freeze the pre-trained layers
for layer in swin_encoder.layers:
layer.trainable = False
# Extract outputs from the four stages
stage_outputs = [
swin_encoder.get_layer('normalize').output, # Output from the 0 stage
swin_encoder.get_layer('layers.0').output, # Output from the first stage
swin_encoder.get_layer('layers.1').output, # Output from the second stage
swin_encoder.get_layer('layers.2').output, # Output from the third stage
swin_encoder.get_layer('layers.3').output, # Output from the fourth stage
]
return Model(swin_encoder.input, stage_outputs, name="SwinTransformerEncoder")
# Test Code
encoder = load_swin_encoder(input_shape=(512, 512, 3))
dummy_input = tf.random.uniform((1, 512, 512, 3))
encoder_outputs = encoder(dummy_input)
for i, output in enumerate(encoder_outputs):
print(f"Stage {i + 1} output shape: {output.shape}")
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
in ()
1 # loading Sanity check
----> 2 encoder = load_swin_encoder(input_shape=(512, 512, 3))
3 dummy_input = tf.random.uniform((1, 512, 512, 3))
4 encoder_outputs = encoder(dummy_input)
5
2 frames
/usr/local/lib/python3.10/dist-packages/keras/src/models/functional.py in __init__(self, inputs, outputs, name, **kwargs)
117 for x in flat_inputs:
118 if not isinstance(x, backend.KerasTensor):
--> 119 raise ValueError(
120 "All `inputs` values must be KerasTensors. Received: "
121 f"inputs={inputs} including invalid value {x} of "
ValueError: All `inputs` values must be KerasTensors. Received: inputs=KerasTensor(type_spec=TensorSpec(shape=(None, 512, 512, 3), dtype=tf.float32, name='input_4'), name='input_4', description="created by layer 'input_4'") including invalid value KerasTensor(type_spec=TensorSpec(shape=(None, 512, 512, 3), dtype=tf.float32, name='input_4'), name='input_4', description="created by layer 'input_4'") of type
Вопрос:
Почему этот код работает на ЦП, но не работает на ТПУ в Colab? Как я могу исправить эту проблему, чтобы сделать ее совместимой с выполнением TPU?
Будем очень признательны за любую информацию или рекомендации. Спасибо!
Я работаю над задачей сегментации изображений и пытаюсь использовать предварительно обученный кодер Swin Transformer Large (Swin-L) для магистрали извлечения признаков. Код отлично работает на процессоре в Colab. Однако при переключении на TPU выдается ошибка, показанная ниже. [b]Код:[/b] [code]from tensorflow.keras import layers, Model, Input from tfswin import SwinTransformerLarge224
# Freeze the pre-trained layers for layer in swin_encoder.layers: layer.trainable = False
# Extract outputs from the four stages stage_outputs = [ swin_encoder.get_layer('normalize').output, # Output from the 0 stage swin_encoder.get_layer('layers.0').output, # Output from the first stage swin_encoder.get_layer('layers.1').output, # Output from the second stage swin_encoder.get_layer('layers.2').output, # Output from the third stage swin_encoder.get_layer('layers.3').output, # Output from the fourth stage ] return Model(swin_encoder.input, stage_outputs, name="SwinTransformerEncoder")
2 frames /usr/local/lib/python3.10/dist-packages/keras/src/models/functional.py in __init__(self, inputs, outputs, name, **kwargs) 117 for x in flat_inputs: 118 if not isinstance(x, backend.KerasTensor): --> 119 raise ValueError( 120 "All `inputs` values must be KerasTensors. Received: " 121 f"inputs={inputs} including invalid value {x} of "
ValueError: All `inputs` values must be KerasTensors. Received: inputs=KerasTensor(type_spec=TensorSpec(shape=(None, 512, 512, 3), dtype=tf.float32, name='input_4'), name='input_4', description="created by layer 'input_4'") including invalid value KerasTensor(type_spec=TensorSpec(shape=(None, 512, 512, 3), dtype=tf.float32, name='input_4'), name='input_4', description="created by layer 'input_4'") of type
[/code] [b]Вопрос:[/b] Почему этот код работает на [b]ЦП[/b], но не работает на [b]ТПУ[/b] в Colab? Как я могу исправить эту проблему, чтобы сделать ее совместимой с выполнением TPU? Будем очень признательны за любую информацию или рекомендации. Спасибо!
Я работаю над задачей сегментации изображений и пытаюсь использовать предварительно обученный кодер Swin Transformer Large (Swin-L) для магистрали извлечения признаков. Код отлично работает на процессоре в Colab. Однако при переключении на TPU...
Во время исследовательской программы TPU я пытался использовать TPU V4-64 , поскольку у меня есть 32 бесплатных чипа TPU V4, которые можно заказать по запросу.
Однако, в отличие от TPU V4-8, тестовые коды, представленные в руководстве, не работали...
Для моего проекта по обнаружению объектов я некоторое время использовал модель fastrcnn_resnet50_fpn_v2. Мои входные изображения имеют высокое разрешение (около 3000 x 4000 пикселей), и я объединяю их в плитки размером 1200 x 1600 пикселей для...
Я пытаюсь использовать keras-nlp с предварительно обученной моделью BERT в маске, чтобы предсказать некоторые токены в последовательности. Однако модель дает противоречивые результаты. Что может быть не так или я чего-то не понимаю?
import keras...
Я использую блокноты в Kaggle и Google Colab. После того как я обучил свою модель в Kaggle (GPU P100) и попытался загрузить ее в Colab (TPU), я получил следующую ошибку:
TypeError: Error when deserializing class 'InputLayer' using...