Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Error on dimensionality #161

Open
RiccardoDiGuida opened this issue Sep 7, 2020 · 1 comment
Open

Error on dimensionality #161

RiccardoDiGuida opened this issue Sep 7, 2020 · 1 comment

Comments

@RiccardoDiGuida
Copy link

Hi, I am facing a problem with dimensionality when I build the model using DeepRepresentationGraph as per your example

Specifically

class DeepRepresentationGraph(AbstractKerasRepresentationGraph):

    # This method returns an ordered list of Keras layers connecting the user/item features to the user/item
    # representation. When TensorRec learns, the learning will happen in these layers.
    def create_layers(self, n_features, n_components):
        return [
            ks.layers.Dense(n_components * 16, activation='relu'), #rectified linear unit
            ks.layers.Dense(n_components * 8, activation='relu'), #you can try other activation layer too
            ks.layers.Dense(n_components * 2, activation='relu'), #most likely changes only benefit other ML like image recog.
            ks.layers.Dense(n_components, activation='tanh'),
        ]

n_sampled_items = int(item_features.shape[0] * .1)

model = TensorRec(n_components=n_components,
                      user_repr_graph=DeepRepresentationGraph(),
                      item_repr_graph=NormalizedLinearRepresentationGraph(),
                      loss_graph=WMRBLossGraph(),
                      biased=biased)

model.fit(train_interactions,
              user_features,
              item_features,
              epochs=epochs,
              verbose=False,
              alpha=alpha,
              n_sampled_items=n_sampled_items,
              learning_rate=learning_rate)

Please bear in mind that train_interactions, user_features and item_features are all scipy.sparse.coo_matrix

The error I get is the following

Traceback (most recent call last):
  File "C:\Program Files\JetBrains\PyCharm Community Edition 2019.3.3\plugins\python-ce\helpers\pydev\_pydevd_bundle\pydevd_exec2.py", line 3, in Exec
    exec(exp, global_vars, local_vars)
  File "<input>", line 1, in <module>
  File "C:\Users\xyzxyz\PycharmProjects\recommender_tf\model.py", line 47, in fit
    learning_rate=learning_rate)
  File "C:\Users\xyzxyz\anaconda3\envs\recommender_tf\lib\site-packages\tensorrec\tensorrec.py", line 538, in fit
    n_sampled_items=n_sampled_items)
  File "C:\Users\xyzxyz\anaconda3\envs\recommender_tf\lib\site-packages\tensorrec\tensorrec.py", line 623, in fit_partial
    session.run(self.tf_optimizer, feed_dict=feed_dict)
  File "C:\Users\xyzxyz\anaconda3\envs\recommender_tf\lib\site-packages\tensorflow_core\python\client\session.py", line 956, in run
    run_metadata_ptr)
  File "C:\Users\xyzxyz\anaconda3\envs\recommender_tf\lib\site-packages\tensorflow_core\python\client\session.py", line 1180, in _run
    feed_dict_tensor, options, run_metadata)
  File "C:\Users\xyzxyz\anaconda3\envs\recommender_tf\lib\site-packages\tensorflow_core\python\client\session.py", line 1359, in _do_run
    run_metadata)
  File "C:\Users\xyzxyz\anaconda3\envs\recommender_tf\lib\site-packages\tensorflow_core\python\client\session.py", line 1384, in _do_call
    raise type(e)(node_def, op, message)
tensorflow.python.framework.errors_impl.InvalidArgumentError: indices[1107898] = 25196 is not in [0, 25196)
	 [[node GatherV2_6 (defined at C:\Users\xyzxyz\anaconda3\envs\recommender_tf\lib\site-packages\tensorflow_core\python\framework\ops.py:1748) ]]
Original stack trace for 'GatherV2_6':
  File "C:\Program Files\JetBrains\PyCharm Community Edition 2019.3.3\plugins\python-ce\helpers\pydev\pydevd.py", line 2127, in <module>
    main()
  File "C:\Program Files\JetBrains\PyCharm Community Edition 2019.3.3\plugins\python-ce\helpers\pydev\pydevd.py", line 2118, in main
    globals = debugger.run(setup['file'], None, None, is_module)
  File "C:\Program Files\JetBrains\PyCharm Community Edition 2019.3.3\plugins\python-ce\helpers\pydev\pydevd.py", line 1427, in run
    return self._exec(is_module, entry_point_fn, module_name, file, globals, locals)
  File "C:\Program Files\JetBrains\PyCharm Community Edition 2019.3.3\plugins\python-ce\helpers\pydev\pydevd.py", line 1434, in _exec
    pydev_imports.execfile(file, globals, locals)  # execute the script
  File "C:\Program Files\JetBrains\PyCharm Community Edition 2019.3.3\plugins\python-ce\helpers\pydev\_pydev_imps\_pydev_execfile.py", line 18, in execfile
    exec(compile(contents+"\n", file, 'exec'), glob, loc)
  File "C:/Users/xyzxyz/PycharmProjects/recommender_tf/main.py", line 62, in <module>
    main()
  File "C:/Users/xyzxyz/PycharmProjects/recommender_tf/main.py", line 57, in main
    preds = fit(item_f, user_f, train_interacions)
  File "C:\Program Files\JetBrains\PyCharm Community Edition 2019.3.3\plugins\python-ce\helpers\pydev\pydevd.py", line 1099, in do_wait_suspend
    self._do_wait_suspend(thread, frame, event, arg, suspend_type, from_this_thread)
  File "C:\Program Files\JetBrains\PyCharm Community Edition 2019.3.3\plugins\python-ce\helpers\pydev\pydevd.py", line 1113, in _do_wait_suspend
    self.process_internal_commands()
  File "C:\Program Files\JetBrains\PyCharm Community Edition 2019.3.3\plugins\python-ce\helpers\pydev\pydevd.py", line 818, in process_internal_commands
    int_cmd.do_it(self)
  File "C:\Program Files\JetBrains\PyCharm Community Edition 2019.3.3\plugins\python-ce\helpers\pydev\_pydevd_bundle\pydevd_comm.py", line 1647, in do_it
    result = pydevd_console_integration.console_exec(self.thread_id, self.frame_id, self.expression, dbg)
  File "C:\Program Files\JetBrains\PyCharm Community Edition 2019.3.3\plugins\python-ce\helpers\pydev\_pydevd_bundle\pydevd_console_integration.py", line 222, in console_exec
    Exec(code, updated_globals, updated_globals)
  File "C:\Program Files\JetBrains\PyCharm Community Edition 2019.3.3\plugins\python-ce\helpers\pydev\_pydevd_bundle\pydevd_exec2.py", line 3, in Exec
    exec(exp, global_vars, local_vars)
  File "<input>", line 1, in <module>
  File "C:\Users\xyzxyz\PycharmProjects\recommender_tf\model.py", line 47, in fit
    learning_rate=learning_rate)
  File "C:\Users\xyzxyz\anaconda3\envs\recommender_tf\lib\site-packages\tensorrec\tensorrec.py", line 538, in fit
    n_sampled_items=n_sampled_items)
  File "C:\Users\xyzxyz\anaconda3\envs\recommender_tf\lib\site-packages\tensorrec\tensorrec.py", line 606, in fit_partial
    self._build_tf_graph(n_user_features=n_user_features, n_item_features=n_item_features)
  File "C:\Users\xyzxyz\anaconda3\envs\recommender_tf\lib\site-packages\tensorrec\tensorrec.py", line 389, in _build_tf_graph
    tf_x_item=tf_x_item,
  File "C:\Users\xyzxyz\anaconda3\envs\recommender_tf\lib\site-packages\tensorrec\prediction_graphs.py", line 53, in connect_serial_prediction_graph
    gathered_user_reprs = tf.gather(tf_user_representation, tf_x_user)
  File "C:\Users\xyzxyz\anaconda3\envs\recommender_tf\lib\site-packages\tensorflow_core\python\util\dispatch.py", line 180, in wrapper
    return target(*args, **kwargs)
  File "C:\Users\xyzxyz\anaconda3\envs\recommender_tf\lib\site-packages\tensorflow_core\python\ops\array_ops.py", line 3956, in gather
    params, indices, axis, name=name)
  File "C:\Users\xyzxyz\anaconda3\envs\recommender_tf\lib\site-packages\tensorflow_core\python\ops\gen_array_ops.py", line 4082, in gather_v2
    batch_dims=batch_dims, name=name)
  File "C:\Users\xyzxyz\anaconda3\envs\recommender_tf\lib\site-packages\tensorflow_core\python\framework\op_def_library.py", line 794, in _apply_op_helper
    op_def=op_def)
  File "C:\Users\xyzxyz\anaconda3\envs\recommender_tf\lib\site-packages\tensorflow_core\python\util\deprecation.py", line 507, in new_func
    return func(*args, **kwargs)
  File "C:\Users\xyzxyz\anaconda3\envs\recommender_tf\lib\site-packages\tensorflow_core\python\framework\ops.py", line 3357, in create_op
    attrs, op_def, compute_device)
  File "C:\Users\xyzxyz\anaconda3\envs\recommender_tf\lib\site-packages\tensorflow_core\python\framework\ops.py", line 3426, in _create_op_internal
    op_def=op_def)
  File "C:\Users\xyzxyz\anaconda3\envs\recommender_tf\lib\site-packages\tensorflow_core\python\framework\ops.py", line 1748, in __init__
    self._traceback = tf_stack.extract_stack()

I am using TF 1.15 and tensorrec 0.26.2

@ljluestc
Copy link


import tensorflow as tf
import numpy as np
from tensorrec import TensorRec
from tensorrec.representation_graphs import AbstractKerasRepresentationGraph
from tensorrec.loss_graphs import WMRBLossGraph
from tensorrec.prediction_graphs import NormalizedLinearRepresentationGraph
from scipy import sparse

# Define custom representation graph
class DeepRepresentationGraph(AbstractKerasRepresentationGraph):
    def create_layers(self, n_features, n_components):
        return [
            tf.keras.layers.Dense(n_components * 16, activation='relu'),
            tf.keras.layers.Dense(n_components * 8, activation='relu'),
            tf.keras.layers.Dense(n_components * 2, activation='relu'),
            tf.keras.layers.Dense(n_components, activation='tanh'),
        ]

# Sample data
n_users = 1000
n_items = 150
n_components = 10
train_interactions = sparse.random(n_users, n_items, density=0.1, format='coo')

# User and item features
user_features = sparse.random(n_users, n_components, density=0.1, format='csr')
item_features = sparse.random(n_items, n_components, density=0.1, format='csr')

# Define model parameters
n_sampled_items = int(item_features.shape[0] * .1)
biased = False
epochs = 10
alpha = 0
learning_rate = 0.01

# Build model
model = TensorRec(
    n_components=n_components,
    user_repr_graph=DeepRepresentationGraph(),
    item_repr_graph=NormalizedLinearRepresentationGraph(),
    loss_graph=WMRBLossGraph(),
    biased=biased
)

# Fit model
model.fit(
    train_interactions,
    user_features,
    item_features,
    epochs=epochs,
    verbose=False,
    alpha=alpha,
    n_sampled_items=n_sampled_items,
    learning_rate=learning_rate
)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants