Code: Select all
from transformers import SwinConfig, TFSwinForImageClassification
from tf_keras.optimizers import Adam
def build_model(num_classes=2, freeze_base=True, learning_rate=1e-4):
config = SwinConfig.from_pretrained(
"microsoft/swin-tiny-patch4-window7-224",
num_labels=num_classes,
num_channels=3,
image_size=224
)
model = TFSwinForImageClassification.from_pretrained(
"microsoft/swin-tiny-patch4-window7-224",
from_pt=True,
config=config,
ignore_mismatched_sizes=True # Avoid ValueError from old classifier head
)
# Freeze backbone if needed
model.swin.trainable = not freeze_base
# Compile
optimizer = Adam(learning_rate=learning_rate)
model.compile(
optimizer=optimizer,
loss="categorical_crossentropy",
metrics=["accuracy"]
)
return model
< /code>
Wenn ich diese Funktion aufrufe und mit meinem Datensatz mit dem Imagedatagenerator beginne: < /p>
model = build_model(num_classes=2, freeze_base=True)
model.fit(train_batches, validation_data=valid_batches, epochs=1)
ValueError: cannot reshape array of size 768000 into shape (768,2)
Additional details:
[*]Input images are 224x224x3
Verwenden von TensorFlow 2.x und Transformers Library < /p>
< /li>
Versuch, nur den Klassifizierer (Stufe 1) und später einige Top
Swin-Blöcke (Stufe 2) < /p>
< /li>
< /p> < /p> < /p> < /p> < /p> < /p> zu fungieren. /> < /li>
< /ul>
Warum kann der Klassifizierer -Kopf nicht umformen.>