Я только что написал следующий код:
import tensorflow as tf
m = 5
sigma = 0.2
rf = 0.1
learning_rate = 0.5
batch_size = 32
x_train = tf.compat.v1.random_normal(shape = (batch_size, m))
x_train = tf.exp((rf - 0.5 * sigma ** 2) + sigma * x_train)
W1 = tf.Variable(tf.compat.v1.random_normal([m, m+10], stddev = 0.03), name = 'W1')
b1 = tf.Variable(tf.compat.v1.random_normal([m+10]), name = 'b1')
W2 = tf.Variable(tf.compat.v1.random_normal([m+10,m], stddev = 0.03), name = 'W2')
b2 = tf.Variable(tf.compat.v1.random_normal([m]), name = 'b2')
hidden_out = tf.add(tf.matmul(x_train,W1), b1)
hidden_out = tf.nn.relu(hidden_out)
b = tf.nn.softmax(tf.add(tf.matmul(hidden_out, W2), b2))
c = tf.multiply(b, x_train)
to_minimize = tf.reduce_sum(tf.multiply(b, x_train), axis = 1)
optimizer = tf.compat.v1.train.AdamOptimizer(learning_rate = learning_rate).minimize(-tf.reduce_mean(to_minimize))
Прежде всего я определил тензор x_train
. После этого я начал определять NN-структуру, которая выдает b
.
. Моя цель - обучить нейронную сеть, чтобы максимизировать для каждого образца скалярное произведение между входом x
и выходом. нейронной сети.
По этой причине я определил вектор c
, а затем попытался свести к минимуму -tf.reduce_mean(to_minimize)
.
Однако, код дается с выводом
Traceback (most recent call last):
File "<input>", line 1, in <module>
File "/Applications/PyCharm.app/Contents/helpers/pydev/_pydev_bundle/pydev_umd.py", line 197, in runfile
pydev_imports.execfile(filename, global_vars, local_vars) # execute the script
File "/Applications/PyCharm.app/Contents/helpers/pydev/_pydev_imps/_pydev_execfile.py", line 18, in execfile
exec(compile(contents+"\n", file, 'exec'), glob, loc)
File "/Users/Marcello/Library/Preferences/PyCharm2019.2/scratches/scratch_1.py", line 27, in <module>
optimizer = tf.compat.v1.train.AdamOptimizer(learning_rate = learning_rate).minimize(-tf.reduce_mean(to_minimize))
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/tensorflow_core/python/training/optimizer.py", line 403, in minimize
grad_loss=grad_loss)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/tensorflow_core/python/training/optimizer.py", line 481, in compute_gradients
"`loss` passed to Optimizer.compute_gradients should "
RuntimeError: `loss` passed to Optimizer.compute_gradients should be a function when eager execution is enabled.
Я не знаю, как это значит и как это исправить. Заранее спасибо.