Как да използвам TensorFlow?

За да използваш TensorFlow ефективно през 2026 г., инсталирай стабилна Python среда, избери дали тренираш на CPU или GPU, изгради модел с Keras, подготви данни с tf.data, тренирай с валидиране и ясни метрики, и после запази/конвертирай модела за продукция (SavedModel или .keras, serving, или on-device inference чрез LiteRT/подобен runtime).

TensorFlow е най-силен, когато искаш контрол над целия ML pipeline: данни, обучение, оценка и деплоймънт.

Въведение

TensorFlow е open-source framework за машинно обучение, който покрива:

  • обучение на модели (включително deep learning),
  • обработка на данни (pipelines),
  • разпределено обучение,
  • деплоймънт в сървър и на устройства.

Към 2026 г. TensorFlow продължава да се развива в 2.x линията; в мобилния/edge контекст Google позиционира LiteRT като on-device runtime наследник/еволюция около TensorFlow Lite за inference на устройства.

Най-честата причина TensorFlow да "не работи" не е кодът, а неправилната среда: Python версия, драйвери и пакетите в venv.

Стъпка 1: Избери цел и тип задача

Преди да инсталираш каквото и да е, дефинирай:

  • какъв проблем решаваш (класификация, регресия, сегментация, NLP),
  • как изглежда входът (таблични данни, изображения, текст),
  • коя метрика е важна (F1, MAE, latency, memory).

Това определя архитектурата, размера на модела и изискванията за compute.

Стъпка 2: Инсталирай TensorFlow в изолирана среда

  1. Създай виртуална среда:
python -m venv .venv
  1. Активирай и обнови pip:
pip install -U pip
  1. Инсталирай TensorFlow:
pip install tensorflow

Провери инсталацията:

import tensorflow as tf
print(tf.__version__)
print(tf.config.list_physical_devices())

Ако очакваш GPU, провери дали се вижда устройство GPU.

Стъпка 3: Построй първия си модел с Keras (таблични данни)

Keras е най-практичният API за старт.

import tensorflow as tf

model = tf.keras.Sequential([
    tf.keras.layers.Input(shape=(20,)),
    tf.keras.layers.Dense(64, activation='relu'),
    tf.keras.layers.Dense(1, activation='sigmoid'),
])

model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])

Стабилен baseline означава:

  • проста архитектура,
  • коректни данни,
  • валидиране,
  • повторяеми експерименти.

Стъпка 4: Подготви данните с tf.data

tf.data ти дава по-добра производителност и по-малко случайни bottleneck-и.

import tensorflow as tf

X = ...
y = ...

ds = tf.data.Dataset.from_tensor_slices((X, y))
ds = ds.shuffle(10_000).batch(256).prefetch(tf.data.AUTOTUNE)

Добри практики:

  • shuffle преди batch.
  • prefetch(AUTOTUNE) почти винаги помага.
  • Дръж preprocessing логиката близо до pipeline-а (и я версионирай).

Стъпка 5: Тренирай с валидиране, checkpoint-и и TensorBoard

Не тренирай "на сляпо".

callbacks = [
  tf.keras.callbacks.EarlyStopping(patience=3, restore_best_weights=True),
  tf.keras.callbacks.ModelCheckpoint('ckpt.keras', save_best_only=True),
  tf.keras.callbacks.TensorBoard(log_dir='tb_logs'),
]

history = model.fit(ds, validation_data=val_ds, epochs=50, callbacks=callbacks)

Какво да гледаш:

  • дали train метриката расте, а validation пада (overfitting),
  • дали loss се „заклещва“ (learning rate/данни),
  • дали има „скокове“ (нестабилен pipeline или малък batch).

Стъпка 6: Практичен пример за изображения (CNN)

За изображения типичен старт е CNN.

inputs = tf.keras.layers.Input(shape=(224, 224, 3))
x = tf.keras.layers.Rescaling(1./255)(inputs)
x = tf.keras.layers.Conv2D(32, 3, activation='relu')(x)
x = tf.keras.layers.MaxPool2D()(x)
x = tf.keras.layers.Conv2D(64, 3, activation='relu')(x)
x = tf.keras.layers.GlobalAveragePooling2D()(x)
outputs = tf.keras.layers.Dense(num_classes, activation='softmax')(x)
model = tf.keras.Model(inputs, outputs)

За production често е по-добре да започнеш от pretrained backbone (transfer learning) и да fine-tune-неш само последните слоеве.

Стъпка 7: Custom training loop (кога ти трябва)

Keras fit() е достатъчен за много случаи. Custom loop има смисъл, когато:

  • имаш нестандартна загуба/метрика,
  • искаш специална логика за batch,
  • правиш multi-task обучение.

С tf.GradientTape контролираш стъпката на обучение и можеш да дебъгваш по-дълбоко.

Стъпка 8: Оптимизации за скорост (mixed precision, XLA)

На GPU често печелиш от:

  • mixed precision,
  • по-голям batch,
  • по-ефективен input pipeline.

Първо оптимизирай данните, после модела.

90% от "TensorFlow е бавен" идва от данните и IO, не от самата мрежа.

Стъпка 9: Запази и деплойни (SavedModel, Serving, edge)

Сървър деплой

Запазване:

model.save('exported_model')

След това:

  • TensorFlow Serving (ако го използваш) или
  • собствен API слой (FastAPI/Node), който зарежда модела и валидира входа.

On-device / edge

За устройства често правиш:

  • quantization (int8) за по-малък модел и по-бърз inference,
  • измерване на latency на реалния хардуер,
  • избор на runtime (LiteRT/ONNX Runtime/TensorRT) според устройството.

Стъпка 10: Дебъг и качество в продукция

Провери тези неща преди launch:

  • стабилност на входния формат,
  • мониторинг на drift (данните се променят),
  • аларми за спад на точност,
  • процедура за rollback.

Съвети за по-добри резултати

  • Започни от прост baseline и мери подобренията.
  • Фиксирай версии (requirements/lock), за да е повторяемо.
  • Автоматизирай evaluation (един и същ тест сет всяка промяна).
  • Ако целта е edge inference, мисли за quantization още при дизайна.

Чести грешки, които да избягваш

  • Тренировка без стабилен validation set.
  • Различен preprocessing в train и продукция.
  • Оптимизация на скорост преди да имаш коректност.
  • Игнориране на drift и мониторинг.

Често задавани въпроси (FAQ)

1) Коя версия на TensorFlow да използвам?

Използвай последната стабилна версия, която е съвместима с твоя Python и (ако трябва) GPU среда; проверявай официалните release notes и install docs.

2) TensorFlow или PyTorch да избера?

И двата са добри; избери според екипа и нуждите за деплоймънт. Ако имаш установен TF Serving/TF pipeline, TensorFlow е логичен.

3) Как да разбера дали TensorFlow използва GPU?

Провери tf.config.list_physical_devices("GPU") и логовете при старт; ако няма GPU устройства, тествай драйвери и съвместимост.

4) Как да подготвя данни за по-добра производителност?

Използвай tf.data с shuffle, batch, prefetch(AUTOTUNE) и минимизирай тежки операции на Python ниво.

5) Как да деплойна TensorFlow модел на edge устройство?

Конвертирай модела с оптимизации (например quantization), тествай latency на реалния хардуер и ползвай runtime като LiteRT според платформата.

Източници (проверени 2025-2026)