Я хочу создать простую систему рекомендаций к фильмам с Y(i,j)=i-й фильм, оцененный j-м пользователем, и R(i,j)=1, если фильм был оценен, иначе r(i,j)=0
import tensorflow as tf
import pymatlab as mat
import numpy as np
import matplotlib.pyplot as plt
import scipy.io
mat=scipy.io.loadmat('ex8_movies.mat')
Y=mat['Y']
R=mat['R']
plt.interactive(False)
#plt.plot(Y)
#plt.show()
print(Y[R==1])
#print(Y[R==0])
r=tf.constant(R,dtype=tf.float32)
params=scipy.io.loadmat('ex8_movieParams.mat')
num_users = params['num_users']
num_movies =params['num_movies']
num_features=params['num_features']
print("shape of Y:",np.shape(Y))
print(num_users)
print(num_movies)
x=np.random.rand(1682,2)
X=tf.placeholder(tf.float32,([1682 ,2]))
#X=tf.Variable(tf.zeros([1682,943]),dtype=tf.float32)
thetas=tf.Variable(tf.zeros([943,2]),dtype=tf.float32)
y=tf.placeholder(tf.float32,[1682 ,943])
sess=tf.InteractiveSession()
init = tf.global_variables_initializer()
sess.run(init)
#print((np.transpose(thetas)))
j_temp=tf.square(tf.matmul(X,tf.transpose(thetas))- y)
j_temp=j_temp([R==1])
cost=tf.reduce_mean(tf.reduce_sum(j_temp))
optimizer=tf.train.GradientDescentOptimizer(0.09).minimize(cost)
sess.run(j_temp,{X:x,y:Y})
#sess.run(j_tmp)
sess.run(cost)
print("slodvhbdfh\n\n")
print(Y[R==0])
Я хочу создать простую систему рекомендаций по фильмам с Y(i,j)=i-й фильм, оцененный j-м пользователем, и R(i,j)=1, если фильм был оценен, иначе r(i,j)=0 Я получить ошибку:
"C:\Python\python interpreter\pythonw.exe" C:/Python/Projects/recommend.py
[5 4 4 ..., 2 3 3]
shape of Y: (1682, 943)
[[943]]
[[1682]]
File "C:/Python/Projects/recommend.py", line 38, in <module>
j_temp=j_temp([R==1])
TypeError: 'Tensor' object is not callable
Process finished with exit code 1
1 ответ
Решение
identifier(arguments)
синтаксис Python для вызова функции Вы пытались сделать это с помощью тензора, который не является функцией - вы не можете вызвать его. Что ты пытаешься сделать? Я не могу сказать, так как вы не предоставили описание в тексте, комментарии или даже полезные имена переменных.
Кроме того, конструкция `[R==1]'не является допустимым Python. Если вы пытаетесь получить все рейтинговые фильмы для этого пользователя, вам нужно пересмотреть синтаксис, чтобы применить фильтр к тензорному. Эти ключевые слова должны привести вас к ответу.