Я новичок в tenorflow (2.0), поэтому я хотел облегчить с помощью простой линейной регрессии. У меня есть следующий код, но я не знаю, почему это не так.
Я пробовал с документацией, но пока у меня нет ответа.
x = np.random.normal(loc=10., scale = 0.1, size=170)
y = np.repeat(10.,170)
a_init = tf.random_normal_initializer()
a = tf.Variable(initial_value=a_init(shape = [1], dtype = 'float32'),trainable=True)
pred = tf.multiply(a,x)
loss = tf.nn.l2_loss(pred-y)
optim = tf.optimizers.Adam(lr = 0.002)
entreno = optim.minimize(loss, [a])
Я получаю следующую ошибку,
Traceback (most recent call last)
<ipython-input-45-e1a191781d0a> in <module>
2 loss = tf.nn.l2_loss(pred-y)
3 optim = tf.optimizers.Adam(lr = 0.002)
----> 4 entreno = optim.minimize(loss, [a])
TypeError: 'tensorflow.python.framework.ops.EagerTensor' object is not callable
Если это поможет, у меня есть тензор потока 1 код:
import tensorflow
import numpy as np
tf = tensorflow.compat.v1
x = np.random.normal(loc=1.,scale=0.1, size = 220)
y = np.repeat(14.37,220)
tf.disable_eager_execution()
x_d = tf.placeholder(shape = [1], dtype=tf.float32)
y_t = tf.placeholder(shape = [1], dtype = tf.float32)
A = tf.Variable(tf.random_normal(shape=[1]))
my_pred = tf.multiply(A,x_d)
loss = tf.square(my_pred-y_t)
optim = tf.train.GradientDescentOptimizer(learning_rate=0.02)
train_step = optim.minimize(loss)
init = tf.global_variables_initializer()
session = tf.Session()
session.run(init)
for _ in range(241):
idx = np.random.choice(220)
ranx = [x[idx]]
rany = [y[idx]]
session.run(train_step, feed_dict ={x_d : ranx, y_t : rany})
if _%20 == 0:
print("A = {}, Loss : {}".format(session.run(A), session.run(loss, feed_dict={x_d:ranx, y_t:rany})))