невозможно присвоить функции callPython (parser-80) - PullRequest
0 голосов
/ 13 июня 2019

Я пытаюсь передать аргумент функции активации в b.layer () из списка строк.

Я пробовал eval ('b.layer (parameters [1] = 3)')

'' '

   #parameters = [layers,index_activation_function,nodes]

    parameters = [2,2,2]

    #Activation Functions
    a_functions = ['softmax','relu','tanh','sigmoid','linear'] 
    function = a_functions[parameters[1]]

    #NN
    b = brain.Brain(1)
    b.input_layer(1)
    b.layer(linear = 2)
    for i in range(layers):
        eval('b.layer(function=nodes)')
    b.layer(linear = 2)

' ''

1 Ответ

1 голос
/ 14 июня 2019

Ниже приведен полный пример, который показывает, как построить строку для функции eval() с помощью Gekko.Это не уникально для Gekko и может использоваться для любой строки, которую вы хотите оценить как выражение.

from gekko import brain
import numpy as np
import matplotlib.pyplot as plt  

# generate training data
x = np.linspace(0.0,2*np.pi)
y = np.sin(x)

parameters = [2,2,2]
a_functions = ['softmax','relu','tanh','sigmoid','linear'] 
function = a_functions[parameters[1]]
s = 'b.layer('+function+'=2)'

b = brain.Brain()
b.input_layer(1)
b.layer(linear=2)
eval(s)
b.layer(linear=2)
b.output_layer(1)
# train
b.learn(x,y)      

# validate
xp = np.linspace(-2*np.pi,4*np.pi,100)
yp = b.think(xp)  

plt.figure()
plt.plot(x,y,'bo')
plt.plot(xp,yp[0],'r-')
plt.show()

Это оценивает строку b.layer(tanh=2), выбирая функцию активации tanh из вашего спискавариантов.Вот результат этого сценария.

Deep learning with Gekko

...