Keras va TensorFlow

Ikkalasini taqqoslash.

Ushbu postda men Keras va TensorFlowga tegishli quyidagi savollarga javob bermoqchiman:

I. Ular nimalar?

II. Ular qanday ishlaydi?

III. Afzalliklari va kamchiliklari qanday?

IV. Ulardan qachon foydalanishim kerak?

I. Ular nimalar?

Keras - bu Python-da yozilgan ochiq manbali neyron tarmoq API. TensorFlow (TF), Microsoft Cognitive Tool (CNTK) va Theano singari bir nechta chuqur o'rganish va mashinalarni o'rganish tizimlari ustida ishlashi mumkin.

TensorFlow - bu yuqori samarali simvolik-raqamli hisoblash uchun mo'ljallangan ochiq manbali dasturiy ta'minot kutubxonasi. U neyron tarmoqlari kabi chuqur o'rganish dasturlarida ham qo'llaniladi. Tensor oqimi Google Brain jamoasi tomonidan ishlab chiqilgan va Python, C ++ va CUDA (GPUlarni dasturlash uchun Nvidia tili) tilida yozilgan. Uni turli xil platformalarda (CPU, GPU, TPU) tarqatish mumkin.

II. Ular qanday ishlaydi?

Keras - bu TensorFlow singari mustaqil ramka emas, balki interfeys. Tez eksperimentni amalga oshirishga imkon beradigan yuqori darajadagi, sezgir abstraksiyalarni taklif qiladi.

TensorFlow o'z funktsiyasidan o'z nomini oladi. Bu foydalanuvchilarga ma'lumotlar, tsenzorlar, tizim orqali qanday o'tishini aniqlashga imkon beradi.

Quyidagi o'xshashliklar Kerasning vazifasi va maqsadini ko'rsatishga yordam beradi. Agar siz dengiz shimoli, matplotlip, plotly.js yoki d3.js dan foydalanayotgan bo'lsangiz, ushbu bo'lim siz uchun. Aks holda, III qismga o'ting.

Analogiya: Keras - TensorFlow uchun, chunki dengiz shimoli - matplotlib

Seaborn - bu matplotlib-ga asoslangan yuqori darajadagi interfeys. Agar men dengiz shoxidan foydalangan holda x va y teglariga to'g'ri keladigan chiziqli regressiyali skatterplot yasamoqchi bo'lsam, menga faqat 3 qator kerak edi:

sns sifatida dengiz shimoli importi
df = sns.load_dataset ('ma'lumotlar to'plami')
sns.regplot (x = df ["mustaqil"], y = df ["qaram"])
sns.plt.show ()

Ammo, agar men xuddi shu syujetni matplotlibda yaratmoqchi bo'lsam, unda quyidagicha ish qilgan bo'lar edim:

matplotlib.pyplot-ni plt sifatida import qilish
numpy ni np sifatida import qilish
plt.figure (anjirlash = (10,10))
plt.xlabel ("mustaqil")
plt.ylabel ("qaram")
plt.grid ()
m, b = n.polyfit (x, y, 1)
plt.plot (x, y, '.')
plt.plot (x, m * x + b, '-')

Seaborn - kutilgan barcha xususiyatlarga ega standart scatterplot grafigini ishlab chiqarishning sodda va samarali usuli. Ammo, agar men skatterplotni fitonsiz yoki matplotlib yorlig'ini qilmoqchi bo'lsam, bu yanada samaraliroq bo'lar edi. Xuddi shunday, Keras - sinab ko'rilgan va haqiqiy metodologiyaga ega bo'lgan funktsional modelni ishlab chiqarishni istasangiz, bu yo'l.

Analogiya Ikki: Keras - TensorFlow-ga, chunki plotly.js - d3.js-ga

Agar siz d3.js-dan foydalangan holda har bir "kategoriya" dagi "miqdor" ni taqqoslaydigan oddiy bar grafigini tuzmoqchi bo'lsangiz, sizning js faylingiz quyidagicha ko'rinishi mumkin:

var svgWidth = 960;
var svgHeight = 500;
var chartMargin = {
  tepaga: 30,
  o'ng: 30,
  pastki: 30,
  chap: 30
};
var chartWidth = svgWidth - chartMargin.left - chartMargin.right;
var chartHeight = svgHeight - chartMargin.top - chartMargin.bottom;
var svg = d3.select ("tana")
  .append ("svg")
  .attr ("balandlik", svgHeight)
  .attr ("kenglik", svgWidth)
var chartGroup = svg.append ("g")
  .attr ("o'zgartirish", "tarjima qilish (" + chartMargin.right + "," + chartMargin.top + ")");
var xBandScale = d3.scaleBand (). oralig'i ([0, chartWidth]). to'ldirish (0,1);
var yLinearScale = d3.scaleLinear (). oralig'i ([chartHeight, 0]);
d3.csv ("data.csv", funktsiya (xato, ma'lumotlar) {
  if (error) otish xatosi;
konsol.log (tvData);
  Data.forEach (funktsiya (ma'lumotlar) {
    data.amount = + data.amount;
  });
  xBandScale.domain (Data.map (funktsiya (ma'lumotlar) {
    return data.category;
  }));
  yLinearScale.domain ([0, d3.max (Ma'lumotlar, funktsiya (ma'lumotlar) {
    return data.y;
  })]);
  var pastkiAxis = d3.axisBottom (xBandScale);
  var leftAxis = d3.axisLeft (yLinearScale) .ticks (10);
  chartGroup.selectAll (". bar")
    .data (Ma'lumotlar)
    .enter ()
    .append ("rect")
    .attr ("sinf", "bar")
    .attr ("x", funktsiya (ma'lumotlar) {
      return xBandScale (data.category);
    })
    .attr ("y", funktsiya (ma'lumotlar) {
      return yLinearScale (data.amount);
    })
    .attr ("kenglik", xBandScale.bandwidth ())
    .attr ("balandlik", funktsiya (ma'lumotlar) {
      return chartHeight - yLinearScale (ma'lumotlar.amount);
    });
  chartGroup.append ("g")
    .call (chapAxis);
chartGroup.append ("g")
    .attr ("o'zgartirish", "tarjima qilish (0," + chartHeight + ")")
    .call (pastkiAxis);
});

Plotly.js-dan foydalanish ancha sodda. Bu quyidagicha ko'rinadi:

var ma'lumotlar = [{
  x: ['birinchi kategoriya', 'ikkinchi kategoriya', 'uchinchi toifa'],
  y: [5, 14, 23],
  turi: "bar"
}];

Plotly.newPlot ('myDiv', ma'lumotlar);

Hiyla tuzish osonroq, lekin u cheklangan. Agar siz ajoyib vizualizatsiyani yaratmoqchi bo'lsangiz, d3-dan foydalanishingiz kerak. Agar siz mukammal funktsional, sodda va foydalanuvchilarga qulay grafiklarni yaratmoqchi bo'lsangiz, unda fitnadan foydalaning. Xuddi shunday, agar siz to'liq ijodiy nazoratni xohlasangiz, TensorFlow-dan foydalaning. Agar siz funktsional mahsulotga tez va oson yo'nalishni qidirsangiz, Kerasni oling.

III. Afzalliklari va kamchiliklari qanday?

Kerasning malakali marketing jamoasi tomonidan ta'riflanganidek, Kerasning afzalliklari quyidagilardan iborat:

  1. Foydalanuvchi bilan do'stona munosabat

Bu ...

Foydalanuvchi tajribasini birinchi o'ringa qo'yadi. Kognitiv yukni minimallashtiradi. Doimiy. Oddiy. Foydalanuvchi harakatlarining sonini kamaytiradi. Ommabop. Katta va faol jamoa tomonidan qo'llab-quvvatlanadi.

2. Modullik va oson kengaytirish

Neyron qatlamlari, funktsiyalar, sxemalar va optimallashtiruvchi vositalar - agar xohlasangiz, yangi modellarni yaratish uchun birlashtirishingiz mumkin bo'lgan barcha mustaqil modullar.

3. Python bilan ishlash

O'z-o'zini tushuntirish. Python kodi - ixcham, disk raskadrovka oson va kengayish qulayligini ta'minlaydi.

Kerasning kamchiliklari:

  1. Cheklangan nazorat

Keras - bu quyi darajadagi ramkalarga kirishni bloklamaydigan chiroyli yozilgan API. Aytilishicha, Keras aslida sizning modelingizning arxitekturasini o'zgartirish uchun mo'ljallanmagan. O'zingizning qatlamlaringizni Kerasda sozlashingiz mumkin (bu erda juda yaxshi misol), ammo TensorFlow-dan foydalanish maqsadga muvofiq bo'lishi mumkin. Nima qilmoqchi ekanligingizga qarab, Kerasdan tashqarida mashg'ulotlaringizni o'tkazishingiz mumkin.

TensorFlow-ning afzalliklari:

  1. Kuchli

TensorFlow har xil foydalanish holatlariga nisbatan qo'llanilishi mumkin. Bu deyarli bir qator matematik operatsiyalarni bajarish orqali ma'lumotlarni qayta ishlashni o'z ichiga olgan deyarli har qanday narsani qurish uchun ishlatilishi mumkin. Biroq, TensorFlow ko'pincha asab tarmoqlarini qurish uchun ishlatiladi va chuqur o'rganishda etakchi o'rinni egallaydi. Agar siz oddiy mashinani o'rganishga harakat qilmoqchi bo'lsangiz, siz shunchaki skikit-o'rganishga sodiq qolishingiz mumkin. Agar siz kichik ma'lumotlar to'plamlari bilan ishlayotgan bo'lsangiz, TensorFlow haddan tashqari ko'p bo'lishi mumkin.

Kanagaw'dagi ulkan to'lqin TensorFlow-dan foydalanadigan Google-ning taniqli DeepDream talqinida

2. Ko'p qirrali

TensorFlow nafaqat sizning modelingizni to'liq boshqarish imkoniyatini beradi, balki sizning mantiqiy ishlov berish mantiqingizni ham boshqaradi. O'tgan yili Google TensorFlow Transform-ni e'lon qildi, bu foydalanuvchiga keng ko'lamli, samarali va taqsimlangan ma'lumotlarga ishlov berish uchun ma'lumotlarni to'liq uzatishni qo'llab-quvvatlaydigan, qayta ishlov beradigan quvurlarni aniqlashga imkon beradi. Siz bu erda ko'proq ma'lumot olishingiz mumkin.

Tensor oqimining kamchiliklari:

  1. Kuchliroq

Katta kuch bilan katta umidsizlik keladi. Ko'proq sintaktik xatolarni, bo'sh nigohlarni, vaqtning ko'p bo'lishini va butunlay chalkashlikni kuting.

IV. Ulardan qachon foydalanishim kerak?

Agar siz tadqiqotchi yoki chuqur o'rganish guru bo'lsangiz, unda birinchi marta Kerasni ishlatishingiz mumkin, chunki u prototiplar va POC tajribalarini tez bajarishga imkon beradi. Keyin tarmog'ingizdagi qadamlar va qatlamlarni to'liq boshqarish uchun TensorFlow-ga o'tishingiz mumkin. Tuzatuvchidan foydalanib, tuzilish haqida real vaqtda ma'lumotlarga ega bo'lishingiz mumkin.

Agar siz Kaggle musobaqasiga kirish yoki hackaton bilan shug'ullanmoqchi bo'lsangiz, Keras sizning eng yaxshi garovingizdir. Agar siz asabiy tarmoqlarni yuzaki tushunish bilan jihozlangan chuqur o'rganishni o'rganmoqchi bo'lsangiz, Keras sizga mos keladi.

Umid qilamanki, bu Keras va TensorFlow o'rtasidagi ba'zi farqlarni ko'rsatishga yordam berdi. Agar biron bir e'tirozingiz yoki savollaringiz bo'lsa, iltimos sharh bering. Qo'shimcha ma'lumot uchun ushbu blogni tekshirishni tavsiya etaman.