Skip to content

Instantly share code, notes, and snippets.

@risenW
Last active July 14, 2020 06:40
Show Gist options
  • Save risenW/4b45409f5dac56128b3b19f269a36d3c to your computer and use it in GitHub Desktop.
Save risenW/4b45409f5dac56128b3b19f269a36d3c to your computer and use it in GitHub Desktop.
const tf = require('@tensorflow/tfjs-node')
const books = require("./data/web_book_data.json")
async function loadModel() {
console.log('Loading Model...')
model = await tf.loadLayersModel("file:///home/dsn/personal/Tfjs/TensorFlowjs_Projects/recommender-sys/recommender-books/model/model.json", false);
console.log('Model Loaded Successfull')
// model.summary()
}
const book_arr = tf.range(0, books.length)
const book_len = books.length
exports.recommend = async function recommend(userId) {
let user = tf.fill([book_len], Number(userId))
let book_in_js_array = book_arr.arraySync()
await loadModel()
console.log(`Recommending for User: ${userId}`)
pred_tensor = await model.predict([book_arr, user]).reshape([10000])
pred = pred_tensor.arraySync()
let recommendations = []
for (let i = 0; i < 6; i++) {
max = pred_tensor.argMax().arraySync()
recommendations.push(books[max]) //Push book with highest prediction probability
pred.splice(max, 1) //drop from array
pred_tensor = tf.tensor(pred) //create a new tensor
}
return recommendations
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment