# Destruir el bloqueo

**URL:** <https://pyar.discourse.group/t/destruir-el-bloqueo/1576>\
**Category:** Sin categoría\
**Created:** [23 Agosto, 2026 15:22 UTC](https://pyar.discourse.group/t/destruir-el-bloqueo/1576 "2026-08-23T15:22:05Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![codigo](https://avatars.discourse-cdn.com/v4/letter/c/e19b73/32.png) [@codigo](https://pyar.discourse.group/u/codigo)\
**Post date:** [23 Agosto, 2026 15:22 UTC](https://pyar.discourse.group/t/destruir-el-bloqueo/1576/1 "2026-08-23T15:22:05Z")

</div>

¿Por que cuando intento escribir codigo en Python, me trabo a pesar de conocer bien todo el lenguaje?, ¿alguna técnica para desbloquearme?

---

<div class="post-metadata">

**Author:** ![javiermarcon](https://yyz2.discourse-cdn.com/free1/user_avatar/pyar.discourse.group/javiermarcon/32/334_2.png) [@javiermarcon](https://pyar.discourse.group/u/javiermarcon)\
**Post date:** [23 Agosto, 2026 17:05 UTC](https://pyar.discourse.group/t/destruir-el-bloqueo/1576/2 "2026-08-23T17:05:08Z")

</div>

Hola,

Lo que describís puede ser que dominas más las sentencias del lenguaje  
pero por ahi te falta un poco más partir los problemas en problemas más  
pequeños y/o aprender diseño y resolución de problemas.

Te recomendaría aprender patrones de diseño si no los sabés  
([https://www.oreilly.com/library/view/apex-design-patterns/9781782173656/ch01s09.html](https://www.oreilly.com/library/view/apex-design-patterns/9781782173656/ch01s09.html)),  
y aplicar TDD en tus desarrollos  
([TDD - Taller de Python](https://aulasoftwarelibre.github.io/taller-de-python/Testing/TDD/)).

Yo por ejemplo para todos los agentes de IA que uso tengo reglas  
bastante estrictas de plan → justificar GoF → test red (aplicando TDD

- BDD) → implementar con DRY + SOLID → test green → refactor.

Si queres se puede ahondar mas en el tema.

Saludos,

Javier.

---

<div class="post-metadata">

**Author:** ![codigo](https://avatars.discourse-cdn.com/v4/letter/c/e19b73/32.png) [@codigo](https://pyar.discourse.group/u/codigo)\
**Post date:** [23 Agosto, 2026 19:46 UTC](https://pyar.discourse.group/t/destruir-el-bloqueo/1576/3 "2026-08-23T19:46:10Z")

</div>

¿Podría ser que me falte saber algo de por ejemplo, matemática discreta, grafos, funcionamiento interno del algoritmo?

---

<div class="post-metadata">

**Author:** ![javiermarcon](https://yyz2.discourse-cdn.com/free1/user_avatar/pyar.discourse.group/javiermarcon/32/334_2.png) [@javiermarcon](https://pyar.discourse.group/u/javiermarcon)\
**Post date:** [24 Agosto, 2026 01:26 UTC](https://pyar.discourse.group/t/destruir-el-bloqueo/1576/4 "2026-08-24T01:26:39Z")

</div>

No necesariamente necesitás meterte ahora en matemática discreta, grafos  
o mucha teoría. Todo eso aporta herramientas y para determinados  
problemas puede ser fundamental, pero lo principal es aprender a  
entender el problema, dividirlo, identificar los supuestos, pensar las  
excepciones y buscar una buena solución.

Una forma de ejercitar eso es mirar prácticamente cualquier sistema que  
ya exista y preguntarte: ¿qué problema intenta resolver?, ¿por qué lo  
hicieron así?, ¿qué supuestos hicieron?, ¿qué casos raros aparecen?,  
¿qué ventajas y desventajas tendría hacerlo de otra manera?

Por ejemplo con el registro de conducir de motos, se usa la cilindrada  
(p kw si es eléctrica) para medir la categoría. Por lo tanto con esa  
clasificación, una MTT Turbine 430RR (la más rápida del mundo) no tiene  
motor a explosión (usa una turbina de helicóptero) y por lo tanto la  
métrica de cilindrada no es aplicable a una turbina.

Saludos,

Javier.

---

<div class="post-metadata">

**Author:** ![codigo](https://avatars.discourse-cdn.com/v4/letter/c/e19b73/32.png) [@codigo](https://pyar.discourse.group/u/codigo)\
**Post date:** [10 Septiembre, 2026 00:55 UTC](https://pyar.discourse.group/t/destruir-el-bloqueo/1576/5 "2026-09-10T00:55:11Z")

</div>

import numpy as np  
from sklearn.datasets import make\_moons  
import matplotlib.pyplot as plt

X, Y = make\_moons(100, noise=0.2, random\_state=42)  
Y = Y.reshape(100,1)

X\_train = X[:80]  
Y\_train = Y[:80]

X\_test = X[80:]  
Y\_test = Y[80:]

np.random.seed(42)

W1 = np.random.randn(80,2)  
W2 = np.random.randn(80,1)  
B1 = np.zeros((1,80))  
B2 = np.zeros((1,80))

def relu(x):  
return np.maximum(0, x)

def sigmoid(x):  
return 1 / (1 + np.exp(-x))

def mse(x):  
return np.mean((x - Y\_train)\*\*2)

def dev\_mse(x):  
return (2/len(Y\_train)) \* (x - Y\_train)

def dev\_sigmoid(x):  
return x \* (1 - x)

def dev\_relu(x):  
return np.where(x \> 0,1,0)

epochs = 3  
LR = 0.5

for epoch in range(epochs):  
#FORWARD  
#capa oculta  
suma\_ponderada1 = X\_train @ W1.T + B1  
rel = relu(suma\_ponderada1)

```auto
#capa de salida: 
suma_ponderada2 = rel @ W2 + B2
sig = sigmoid(suma_ponderada2)

m = mse(sig) 

#BACKPROPAGATION 
#capa de salida:
delta2 = dev_mse(sig) * dev_sigmoid(sig)  
DW2 = delta2 @ rel 
DB2 = np.sum(delta2, axis=0, keepdims=True) 

#capa oculta: 
delta1 = (delta2 @ W2) * dev_relu(suma_ponderada1)
DW1 = delta1 @ X_train 
DB1 = np.sum(delta1, axis=0, keepdims=True)

#descenso de gradiente: 
W1 -= LR * DW1 
W2 -= LR * DW2 

```

¿por que será que este codigo me devuelve error?, ¿Cómo podría hacer que las dimensiones del descenso de gradiente de W2 coincidan?
