LoginSignup
0
1

More than 5 years have passed since last update.

TensorFlowでレコメンデーション

Last updated at Posted at 2017-08-30

概要

TnsorFlowでレコメンデーションやってみた。

参考にしたページ

環境

windows 7 sp1 64bit
anaconda3
tensorflow 1.2

サンプルコード

import tensorflow as tf

#    山田 田中 佐藤 中村 川村 鈴木 下林
X = [[2.5, 3.0, 2.5,  -1, 3.0, 3.0,  -1], #'カレー'
    [ 3.5, 3.5, 3.0, 3.5, 4.0, 4.0, 4.5], #'ラーメン'
    [ 3.0, 1.5,  -1, 3.0, 2.0,  -1,  -1], #'チャーハン'
    [ 3.5, 5.0, 3.5, 4.0, 3.0, 5.0, 4.0], #'寿司'
    [ 2.5, 3.5,  -1, 2.5, 2.0, 3.5, 1.0], #'牛丼'
    [ 3.0, 3.0, 4.0, 4.5, 3.0, 3.0,  -1]] #'うどん'
Z = [[  1,   1,   1,   0,   1,   1,  0], #'カレー'
    [   1,   1,   1,   1,   1,   1,  1], #'ラーメン'
    [   1,   1,   0,   1,   1,   0,  0], #'チャーハン'
    [   1,   1,   1,   1,   1,   1,  1], #'寿司'
    [   1,   1,   0,   1,   1,   1,  1], #'牛丼'
    [   1,   1,   1,   1,   1,   1,  0]] #'うどん'

x = tf.placeholder(tf.float32, [6, 7])
y = tf.placeholder(tf.float32, [6, 7])

w1 = tf.Variable(tf.random_normal([6, 2], mean = 0.0, stddev = 0.05))
w2 = tf.Variable(tf.random_normal([7, 2], mean = 0.0, stddev = 0.05))
result = tf.matmul(w1, tf.transpose(w2))

loss = tf.square(tf.multiply(tf.matmul(w1, tf.transpose(w2)) - x, y)) + (tf.nn.l2_loss(w1) + tf.nn.l2_loss(w2)) * 0.01
train_step = tf.train.GradientDescentOptimizer(0.001).minimize(loss)

init = tf.initialize_all_variables()
sess = tf.Session()
sess.run(init)
for i in range(10000):
    sess.run(train_step, feed_dict = {
        x: X,
        y: Z
    })
    if i % 100 == 0:
        print (sess.run(loss, feed_dict = {
            x: X,
            y: Z
        }))

expected_evals = sess.run(result, feed_dict = {
    x: X,
    y: Z
})
for eval in expected_evals:
    print("%s" % eval)



結果

#    山田         田中      佐藤         中村        川村        鈴木       下林

[ 2.63470387  2.95388412  2.56464982  3.02486849  2.52338362  3.07825279  3.26381159]#'カレー'
[ 3.37572169  3.67882395  3.33641553  3.90223742  3.23290825  3.849828    4.3096714 ]#'ラーメン'
[ 2.37158823  1.69161224  2.76956868  2.96601868  2.2697053   1.91008389  4.10669899]#'チャーハン'
[ 3.65982723  4.70319939  3.27653408  4.05092335  3.5062356   4.80988169  3.80868769]#'寿司'
[ 2.15531445  3.53876495  1.56305885  2.19226551  2.06619763  3.51690435  1.31375158]#'牛丼'
[ 3.35266995  2.84457064  3.69929171  4.07905245  3.20942688  3.10351372  5.25796843]#'うどん'

下林さんへのおすすめは うどん ラーメン チャーハン 


成果物

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1