ਤੁਹਾਡੀ ਪਹਿਲੀ ਡੀਪ ਲਰਨਿੰਗ ਲਾਇਬ੍ਰੇਰੀ ਸਿਰਫ਼ ਇੱਕ ਮਾਡਲ ਨੂੰ ਚਲਾਉਣ ਤੋਂ ਕਿਤੇ ਵੱਧ ਕੁਝ ਕਰਦੀ ਹੈ। ਇਹ ਗ੍ਰੇਡੀਐਂਟਸ (gradients), ਲੇਅਰਾਂ (layers) ਅਤੇ ਡਾਟਾ ਫਲੋ (data flow) ਬਾਰੇ ਤੁਹਾਡੀ ਸੋਚ ਨੂੰ ਰੂਪ ਦਿੰਦੀ ਹੈ। ਗਲਤ ਲਾਇਬ੍ਰੇਰੀ ਚੁਣੋ ਅਤੇ ਤੁਸੀਂ ਨਿਊਰਲ ਨੈੱਟਵਰਕ ਕਿਵੇਂ ਕੰਮ ਕਰਦੇ ਹਨ ਇਹ ਸਿੱਖਣ ਦੀ ਬਜਾਏ ਹਫ਼ਤਿਆਂ ਬੋਇਲਰਪਲੇਟ (boilerplate) ਕੋਡ ਨਾਲ ਲੜਨ ਵਿੱਚ ਬਿਤਾ ਦਿਓਗੇ। ਸਹੀ ਲਾਇਬ੍ਰੇਰੀ ਚੁਣੋ ਅਤੇ ਸੰਕਲਪ (concepts) ਆਪਣੇ ਆਪ ਸਮਝ ਆਉਣ ਲੱਗ ਜਾਣਗੇ ਕਿਉਂਕਿ ਕੋਡ ਤੁਹਾਡੇ ਰਸਤੇ ਵਿੱਚ ਨਹੀਂ ਆਉਂਦਾ।

ਜ਼ਿਆਦਾਤਰ ਸ਼ੁਰੂਆਤ ਕਰਨ ਵਾਲੇ ਤਿੰਨ ਲਾਇਬ੍ਰੇਰੀਆਂ ਤੱਕ ਹੀ ਆਪਣੀ ਚੋਣ ਨੂੰ ਸੀਮਤ ਰੱਖਦੇ ਹਨ: Keras, PyTorch, ਅਤੇ TensorFlow। JAX ਵੀ ਹੈ, ਪਰ ਜਦੋਂ ਤੱਕ ਤੁਸੀਂ ਇਹ ਨਹੀਂ ਜਾਣਦੇ ਕਿ Jacobian ਕੀ ਹੁੰਦਾ ਹੈ, ਉਦੋਂ ਤੱਕ ਤੁਹਾਨੂੰ ਇਸ ਨੂੰ ਨਜ਼ਰਅੰਦਾਜ਼ ਕਰ ਦੇਣਾ ਚਾਹੀਦਾ ਹੈ।

"Beginner-Friendly" (ਸ਼ੁਰੂਆਤ ਕਰਨ ਵਾਲਿਆਂ ਲਈ ਸੁਖਾਲਾ) ਦਾ ਅਸਲ ਮਤਲਬ ਕੀ ਹੈ

ਕੋਈ ਲਾਇਬ੍ਰੇਰੀ ਸਿਰਫ਼ ਇਸ ਲਈ ਸੁਖਾਲੀ ਨਹੀਂ ਹੁੰਦੀ ਕਿਉਂਕਿ ਉਸਦੀ ਡਾਕੂਮੈਂਟੇਸ਼ਨ (documentation) ਬਹੁਤ ਜ਼ਿਆਦਾ ਹੈ। ਇਹ ਉਦੋਂ ਸੁਖਾਲੀ ਹੁੰਦੀ ਹੈ ਜਦੋਂ ਕੋਡ ਉਸੇ ਗਣਿਤ (math) ਵਾਂਗ ਪੜ੍ਹਿਆ ਜਾ ਸਕੇ ਜੋ ਤੁਸੀਂ ਟਿਊਟੋਰਿਅਲ ਵਿੱਚ ਦੇਖਿਆ ਸੀ, ਅਤੇ ਜਦੋਂ ਕੋਈ ਐਰਰ ਮੈਸੇਜ (error message) C++ ਬੈਕਐਂਡ ਤੋਂ ਸਟੈਕ ਟ੍ਰੇਸ (stack trace) ਸੁੱਟਣ ਦੀ ਬਜਾਏ ਤੁਹਾਡੀ ਗਲਤੀ ਵੱਲ ਇਸ਼ਾਰਾ ਕਰੇ। ਤੁਸੀਂ ਲਰਨਿੰਗ ਰੇਟਸ (learning rates) ਅਤੇ ਐਕਟੀਵੇਸ਼ਨ ਫੰਕਸ਼ਨਾਂ (activation functions) ਬਾਰੇ ਸੋਚਣਾ ਚਾਹੁੰਦੇ ਹੋ, ਨਾ ਕਿ ਫਰੇਮਵਰਕ ਦੇ ਅੰਦਰੂਨੀ ਹਿੱਸਿਆਂ ਵਿੱਚ ਦੱਬੇ ਹੋਏ ਟੈਂਸਰ ਸ਼ੇਪ ਮਿਸਮੈਚ (tensor shape mismatches) ਬਾਰੇ।

Keras: ਨਤੀਜੇ ਦੇਖਣ ਲਈ ਇੱਥੋਂ ਸ਼ੁਰੂ ਕਰੋ

Keras ਇੱਕ ਸਰਲ ਵਿਚਾਰ 'ਤੇ ਬਣਾਇਆ ਗਿਆ ਸੀ। ਤੁਹਾਨੂੰ ਇੱਕ ਵਿਚਾਰ ਤੋਂ ਲੈ ਕੇ ਸਿਖਲਾਈ ਪ੍ਰਾਪਤ ਮਾਡਲ (trained model) ਤੱਕ ਉਨੀ ਦੇਰ ਵਿੱਚ ਪਹੁੰਚਣ ਦੇ ਯੋਗ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ ਜਿੰਨੀ ਦੇਰ ਵਿੱਚ ਤੁਸੀਂ ਇੱਕ ਕੌਫੀ ਪੀ ਸਕਦੇ ਹੋ। ਇਹ backpropagation ਅਤੇ graph optimization ਦੀ ਗੁੰਝਲਤਾ ਨੂੰ ਇੱਕ ਸਾਫ਼ API ਦੇ ਪਿੱਛੇ ਲੁਕਾ ਦਿੰਦਾ ਹੈ, ਤਾਂ ਜੋ ਇੱਕ ਪੂਰੀ ਤਰ੍ਹਾਂ ਕੰਮ ਕਰਨ ਵਾਲਾ image classifier ਅਕਸਰ Python ਦੀਆਂ ਇੱਕ ਦਰਜਨ ਲਾਈਨਾਂ ਵਿੱਚ ਹੀ ਆ ਜਾਂਦਾ ਹੈ।

ਤੁਸੀਂ ਇੱਕ Sequential ਆਬਜੈਕਟ ਦੇ ਅੰਦਰ ਲੇਅਰਾਂ ਨੂੰ ਇੱਕ ਦੇ ਉੱਪਰ ਇੱਕ ਰੱਖ ਕੇ ਇੱਕ ਮਾਡਲ ਨੂੰ ਪਰਿਭਾਸ਼ਿਤ ਕਰਦੇ ਹੋ, ਇੱਕ optimizer ਅਤੇ loss function ਜੋੜਨ ਲਈ model.compile() ਨੂੰ ਕਾਲ ਕਰਦੇ ਹੋ, ਅਤੇ ਫਿਰ ਟ੍ਰੇਨ ਕਰਨ ਲਈ model.fit() ਨੂੰ ਕਾਲ ਕਰਦੇ ਹੋ। ਇਸਦਾ ਸਿੰਟੈਕਸ (syntax) ਇੱਕ ਚੈੱਕਲਿਸਟ ਵਾਂਗ ਮਹਿਸੂਸ ਹੁੰਦਾ ਹੈ। Input shape? ਹੋ ਗਿਆ। Dense layer? ਹੋ ਗਿਆ। Training loop? ਸੰਭਾਲ ਲਿਆ ਗਿਆ। ਇਹ ਤੁਹਾਨੂੰ ਸ਼ੁਰੂਆਤੀ ਪੜਾਅ 'ਤੇ ਉਹਨਾਂ ਚੀਜ਼ਾਂ ਨਾਲ ਪ੍ਰਯੋਗ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦਾ ਹੈ ਜੋ ਅਸਲ ਵਿੱਚ ਮਹੱਤਵਪੂਰਨ ਹਨ। ਕੀ ਇੱਕ ਹੋਰ ਲੇਅਰ ਜੋੜਨਾ ਮਦਦ ਕਰਦਾ ਹੈ? ਕੀ ਤੁਹਾਨੂੰ ReLU ਦੀ ਜਗ੍ਹਾ sigmoid ਦੀ ਵਰਤੋਂ ਕਰਨੀ ਚਾਹੀਦੀ ਹੈ? ਜਦੋਂ ਤੁਸੀਂ batch size ਬਦਲਦੇ ਹੋ ਤਾਂ ਕੀ ਹੁੰਦਾ ਹੈ?

ਜੇਕਰ ਤੁਹਾਡਾ ਟੀਚਾ ਕੰਫਿਗਰੇਸ਼ਨ ਫਾਈਲਾਂ ਵਿੱਚ ਡੁੱਬੇ ਬਿਨਾਂ ਇਹ ਸਿੱਖਣਾ ਹੈ ਕਿ ਲੇਅਰਾਂ ਅਤੇ optimizers ਕੀ ਕਰਦੇ ਹਨ, ਤਾਂ Keras ਉਸ ਰੁਕਾਵਟ ਨੂੰ ਦੂਰ ਕਰ ਦਿੰਦਾ ਹੈ। ਤੁਸੀਂ ਪੈਕੇਜ ਇੰਸਟਾਲ ਕਰਨ ਦੇ ਇੱਕ ਘੰਟੇ ਦੇ ਅੰਦਰ ਅਸਲ ਤਸਵੀਰਾਂ 'ਤੇ ਚੱਲਣ ਵਾਲਾ ਇੱਕ convolutional network ਤਿਆਰ ਕਰ ਸਕਦੇ ਹੋ। ਕਿਉਂਕਿ Keras ਡਿਫੌਲਟ ਰੂਪ ਵਿੱਚ TensorFlow ਦੇ ਉੱਪਰ ਕੰਮ ਕਰਦਾ ਹੈ, ਤੁਹਾਨੂੰ ਉੱਚ-ਪੱਧਰੀ API ਨੂੰ ਛੱਡੇ ਬਿਨਾਂ production-grade ਡਾਟਾ ਪਾਈਪਲਾਈਨਾਂ ਤੱਕ ਪਹੁੰਚ ਵੀ ਮਿਲਦੀ ਹੈ।

ਇਸਦਾ ਨੁਕਸਾਨ ਉਦੋਂ ਸਾਹਮਣੇ ਆਉਂਦਾ ਹੈ ਜਦੋਂ ਤੁਸੀਂ ਮਿਆਰੀ ਰਸਤੇ ਤੋਂ ਬਾਹਰ ਨਿਕਲਦੇ ਹੋ। ਜੇਕਰ ਤੁਹਾਨੂੰ ਇੱਕ custom loss function ਲਿਖਣ ਦੀ ਲੋੜ ਹੈ ਜੋ ਵਿਚਕਾਰਲੇ activations 'ਤੇ ਨਿਰਭਰ ਕਰਦਾ ਹੈ, ਜਾਂ ਜੇਕਰ ਤੁਸੀਂ ਟ੍ਰੇਨਿੰਗ ਦੌਰਾਨ backward pass ਨੂੰ ਬਦਲਣਾ ਚਾਹੁੰਦੇ ਹੋ, ਤਾਂ Keras ਸੀਮਤ ਮਹਿਸੂਸ ਹੋ ਸਕਦਾ ਹੈ। ਇਸ ਵਿੱਚ ਕੁਝ ਵਿਕਲਪ (escape hatches) ਹਨ, ਪਰ ਉਹਨਾਂ ਦੀ ਵਰਤੋਂ ਕਰਨ ਦਾ ਮਤਲਬ ਅਕਸਰ ਸਿੱਧਾ ਫਰੇਮਵਰਕ ਕੋਡ ਵਿੱਚ ਜਾਣਾ ਹੁੰਦਾ ਹੈ। ਕਸਟਮ ਰਿਸਰਚ ਲੌਜਿਕ (custom research logic) ਲਈ, ਇਹ ਇੱਕ ਵੱਡੀ ਰੁਕਾਵਟ ਹੈ।

PyTorch: ਅੰਦਰੂਨੀ ਕੰਮਕਾਜ ਨੂੰ ਦੇਖ ਕੇ ਸਿੱਖੋ

PyTorch ਇੱਕ ਨਿਊਰਲ ਨੈੱਟਵਰਕ ਨੂੰ

ਇਹ ਈਕੋਸਿਸਟਮ ਡਿਪਲਾਈਮੈਂਟ ਲਈ ਬਣਾਇਆ ਗਿਆ ਹੈ। TensorFlow Lite ਮਾਡਲਾਂ ਨੂੰ ਕੰਪਰੈੱਸ ਕਰਦਾ ਹੈ ਤਾਂ ਜੋ ਉਹ ਫ਼ੋਨਾਂ, ਮਾਈਕ੍ਰੋਕੰਟਰੋਲਰਾਂ ਅਤੇ ਸੀਮਤ ਮੈਮੋਰੀ ਵਾਲੇ ਇੰਡਸਟਰੀਅਲ ਸੈਂਸਰਾਂ 'ਤੇ ਚੱਲ ਸਕਣ। TensorFlow.js ਡੇਟਾ ਨੂੰ ਸਰਵਰ 'ਤੇ ਭੇਜੇ ਬਿਨਾਂ ਸਿੱਧਾ ਬ੍ਰਾਊਜ਼ਰ ਦੇ ਅੰਦਰ ਇਨਫਰੈਂਸ ਚਲਾਉਂਦਾ ਹੈ। TensorFlow Serving ਵੱਡੇ ਪ੍ਰੋਡਕਸ਼ਨ ਵਾਤਾਵਰਣਾਂ ਵਿੱਚ ਮਾਡਲ ਵਰਜ਼ਨਿੰਗ ਅਤੇ ਬੈਚ ਪ੍ਰੀਡਿਕਸ਼ਨਾਂ ਨੂੰ ਸੰਭਾਲਦਾ ਹੈ।

TensorFlow ਦੀ ਚੋਣ ਉਦੋਂ ਕਰੋ ਜਦੋਂ ਤੁਹਾਡੇ ਪ੍ਰੋਜੈਕਟ ਵਿੱਚ ਇੱਕ ਸਖ਼ਤ ਭੌਤਿਕ