Python - Ayuda con funciones en Python

 
Vista:

Ayuda con funciones en Python

Publicado por Paloma (2 intervenciones) el 02/05/2020 21:02:34
Hola, miren tengo esta duda, trato de programar un algoritmo de aprendizaje de un perceptron, solo que me trabe al hacerla en python. mi codigo es este.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import random
def pedirFuncionSalida(n,d):
    d=[]
    dat=[]
    n=int(input("Ingrese numero de elementos de su salida: "))
    print("Ingrese elementos separados con un enter: ")
    for i in range(n):
        dat=int(input("num: "))
        d.append(dat)
 
def funcionTresEntradas():
    e3=([[0,0,0],[0,0,1],[0,1,0],[0,1,1],[1,0,0],[1,0,1],[1,0,1],
         [1,1,0],[1,1,1]])
    s3=([0],[0],[0],[0],[0],[0],[0],[1])
 
def funcionCuatroEntradas():
    e4=([[0,0,0,0],[0,0,0,1],[0,0,1,0],[0,0,1,1],[0,1,0,0],[0,1,0,1],
         [0,1,1,0],[0,1,1,1],[1,0,0,0],[1,0,0,1],[1,0,1,0],[1,0,1,1],
         [1,1,0,0],[1,1,0,1],[1,1,1,0],[1,1,1,1]])
    s4=([0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[1])
 
def startTresEntradas():
    w0=[]
    for i in range (3):
        w0.append(random.uniform(-2,2))
    print(w0)
 
def startCuatroEntradas():
    w0=[]
    for i in range (4):
        w0.append(random.uniform(-2,2))
    print(w0)

Lo que trato de hacer es lo siguiente

ver

Dejo el link de la imagen por si no se visualiza aqui
https://subefotos.com/ver/?8e58392aa479dfc1ee975048190740a8o.png

El chiste es que a la hora de hacer las funciones add y subtract no se como usar las funciones ya hechas antes, como el vector de la funcion funcionTresEntradas() y el vector de pesos de la funcion startTresEntradas().
Espero haberme hecho a entender y espero puedan ayudarme por favor :(
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 2.808
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Ayuda con funciones en Python

Publicado por tincopasan (1082 intervenciones) el 04/05/2020 17:05:44
Veamos:

1
2
3
4
5
def funcionTresEntradas():
 
    e3=([[0,0,0],[0,0,1],[0,1,0],[0,1,1],[1,0,0],[1,0,1],[1,0,1],
         [1,1,0],[1,1,1]])
    s3=([0],[0],[0],[0],[0],[0],[0],[1])

partamos de la base que esa función tiene dos vectores, el de entrada y el de salida, ahora bien, justamente las funciones son para devolver un valor y eso se hace con la palabra reservada return
1
2
3
4
5
def funcionTresEntradas():
    e3=([[0,0,0],[0,0,1],[0,1,0],[0,1,1],[1,0,0],[1,0,1],[1,0,1],
         [1,1,0],[1,1,1]])
    s3=([0],[0],[0],[0],[0],[0],[0],[1])
    return e3 #por ejemplo, también puede devolver los dos:   return e3,s3

¿y cómo lo uso?
solo como ejemplo:
1
2
entrada = TresEntradas()  # ahora entrada vale e3
#solo queda usarlo en una función, ya sea por parámetro o directamente

la función startTresEntradas tambien debe devolver algo, el peso por ejemplo.

1
2
3
4
5
def startTresEntradas():
 
    w0=[]
    etc.
    return w0

peso = startTresEntradas()
después simplemente por ejemplo :

1
2
3
def cualquiera(entrada,peso):
    for  x in entrada:
    etc.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Ayuda con funciones en Python

Publicado por Paloma (2 intervenciones) el 05/05/2020 19:12:54
Creo haber entendido...
Solo tengo una duda mas...
Tengo mi codigo ahora asi, ya que vi que algunas funciones no eran necesarias, solo que mi codigo nunca ejecuta mi funcion test ... Me podria ayudar con eso?
Segun yo esta bien, ya que cuando junto la funcion test() y la funcion condiciones() el codigo si corre, pero para mi necesidad, estas deben estar separadas...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
import random
import operator
 
def add(X,w0):
    add=[]
    for i in range(len(X)):
        add.append(w0[i]+X[i])
    print(add)
 
def subtract(X,w0):
    sub=[]
    for i in range(len(X)):
        sub.append(w0[i]-X[i])
    print(sub)
 
def test(w0):
    N=[[0,0,0,1],[0,0,1,1],[0,1,0,1],[0,1,1,1],[1,0,0,1],[1,0,1,1],
         [1,1,0,1]]
    P=[[1,1,1,1]]
    e3=[[0,0,0,1],[0,0,1,1],[0,1,0,1],[0,1,1,1],[1,0,0,1],[1,0,1,1],
        [1,1,0,1],[1,1,1,1]]
    compara=[]
    X=random.choice(e3)
    print("El vector X a utilizar es: ",X)
    compara=X
    pp=sum(list(map(operator.mul,X,w0)))
    print("El producto punto de X y W es: ",pp)
    condiciones(X,w0)
 
 
def condiciones(X,w0):
    X=[]
    N=[[0,0,0,1],[0,0,1,1],[0,1,0,1],[0,1,1,1],[1,0,0,1],[1,0,1,1],
         [1,1,0,1]]
    P=[[1,1,1,1]]
    e3=[[0,0,0,1],[0,0,1,1],[0,1,0,1],[0,1,1,1],[1,0,0,1],[1,0,1,1],
        [1,1,0,1],[1,1,1,1]]
    pp=0
    w0=[]
    if X in P and pp>0:
        print("El vector ",X," esta en P y Go to Test")
        if X in compara:
            X=random.choice(e3)
            compara=X
            print("El vector X a utilizar es: ",X)
            test(w0)
        else:
            test(w0)
    elif X in P and pp<=0:
        print("Go to Add")
        add(X,w0)
        condiciones(X,w0)
    elif X in N and pp<0:
        print("El vector ",X," esta en N y Go to Test")
        if X in compara:
            X=random.choice(e3)
            compara=X
            print("El vector X a utilizar es: ",X)
            test(w0)
        else:
            test(w0)
    elif X in N and pp>=0:
        print("Go to Subtract")
        subtract(X,w0)
        condiciones(X,w0)
 
 
 
n=0
d=[]
dat=[]
w0=[]
e3=[[0,0,0,1],[0,0,1,1],[0,1,0,1],[0,1,1,1],[1,0,0,1],[1,0,1,1],
    [1,1,0,1],[1,1,1,1]]
num=int(input("Ingrese numero de elementos de su salida: "))
print("Ingrese elementos separados con un enter: ")
for i in range(num):
    dat=int(input("num: "))
    d.append(dat)
 
for i in range (4):
    w0.append(random.uniform(-1,1))
print("El primer vector de pesos es: ",w0)
test(w0)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 2.808
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Ayuda con funciones en Python

Publicado por tincopasan (1082 intervenciones) el 06/05/2020 04:45:55
dos cosas:
1) dar las gracias a quien intenta ayudarte no está de más.
2) no has entendido nada de lo que te dije. lee sobre funciones y como retornan valores en todo caso.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
-1
Comentar