# Tensorflow Example
library(tensorflow)
library(reticulate)
# X_train and Y_train data
train_X = c(3.3,4.4,5.5,6.71,6.93,4.168,9.779,6.182,7.59,2.167,
7.042,10.791,5.313,7.997,5.654,9.27,3.1)
train_Y <- c(1.7,2.76,2.09,3.19,1.694,1.573,3.366,2.596,2.53,1.221,
2.827,3.465,1.65,2.904,2.42,2.94,1.3)
n_samples <- length(train_X)
# Parameters
learning_rate <- 0.01
training_epochs <- 1000
display_step <- 50
# Tensorflow graph input
X = tf$placeholder(dtype = "float")
Y <- tf$placeholder(dtype = "float")
# Set model weights
W <- tf$Variable(tf$random_uniform(shape(1L), -1.0, 1.0))
#b <- tf$Variable(tf$zeros(shape = (0)))
b <- tf$Variable(tf$zeros(shape(1L)))
# Construct a linear model
pred <- tf$add(tf$multiply(X, W), b)
# Mean squared error
cost = tf$reduce_sum(input_tensor = tf$pow(pred - Y, 2))/(2*n_samples)
# Gradient descent
optimizer = tf$train$GradientDescentOptimizer(learning_rate)$minimize(cost)
# Launch graph and initialize variables
sess = tf$Session()
2018-01-14 21:20:23.880842: I tensorflow/core/platform/cpu_feature_guard.cc:137] Your CPU supports instructions that this TensorFlow binary was not compiled to use: SSE4.1 SSE4.2 AVX AVX2 FMA
sess$run(tf$global_variables_initializer())
# Fit the line
for (step in 1:training_epochs){
sess$run(fetches = optimizer, feed_dict = dict(X = train_X, Y =train_Y))
if (step %%20 == 0)
cat(step, "-", sess$run(W), sess$run(b), "\n")
}
20 - 0.3721182 -0.05534698
40 - 0.3692235 -0.03484903
60 - 0.3664016 -0.01484253
80 - 0.3636473 0.004683835
100 - 0.3609592 0.02374159
120 - 0.3583355 0.04234198
140 - 0.3557749 0.06049599
160 - 0.3532756 0.07821435
180 - 0.3508364 0.09550747
200 - 0.3484557 0.1123856
220 - 0.3461321 0.1288586
240 - 0.3438643 0.1449363
260 - 0.3416509 0.1606282
280 - 0.3394907 0.1759435
300 - 0.3373823 0.1908913
320 - 0.3353244 0.2054804
340 - 0.333316 0.2197193
360 - 0.3313558 0.2336165
380 - 0.3294426 0.2471801
400 - 0.3275753 0.2604183
420 - 0.3257528 0.2733388
440 - 0.3239741 0.2859491
460 - 0.3222381 0.2982569
480 - 0.3205437 0.3102692
500 - 0.31889 0.3219933
520 - 0.3172759 0.333436
540 - 0.3157007 0.3446041
560 - 0.3141632 0.3555042
580 - 0.3126625 0.3661427
600 - 0.311198 0.376526
620 - 0.3097685 0.3866601
640 - 0.3083734 0.3965509
660 - 0.3070118 0.4062044
680 - 0.3056828 0.4156262
700 - 0.3043857 0.4248219
720 - 0.3031198 0.4337969
740 - 0.3018842 0.4425564
760 - 0.3006783 0.4511058
780 - 0.2995013 0.4594501
800 - 0.2983526 0.4675941
820 - 0.2972314 0.4755426
840 - 0.2961372 0.4833004
860 - 0.2950692 0.4908719
880 - 0.2940268 0.4982618
900 - 0.2930095 0.5054744
920 - 0.2920165 0.5125138
940 - 0.2910474 0.5193844
960 - 0.2901016 0.52609
980 - 0.2891784 0.5326347
1000 - 0.2882774 0.5390224
LS0tCnRpdGxlOiAiVGVuc29yZmxvdyBUdXRvcmlhbHMiCm91dHB1dDogaHRtbF9ub3RlYm9vawpkZl9wcmludDogcGFnZWQKYXV0aG9yOiAiTmFuYSAgQm9hdGVuZyIKVGltZTogJ2ByIFN5cy50aW1lKClgJwpkYXRlOiAiYHIgZm9ybWF0KFN5cy50aW1lKCksICclQiAlZCwgJVknKWAiCi0tLQoKCgoKYGBge3Igc2V0dXAsaW5jbHVkZT1GQUxTRX0KCmtuaXRyOjpvcHRzX2NodW5rJHNldChlY2hvID0gVFJVRSwKICAgICAgICAgICAgICAgICAgICAgIHdhcm5pbmcgPSBGQUxTRSwKICAgICAgICAgICAgICAgICAgICAgIG91dC53aWR0aCA9IjEwMCUiLAogICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSA9IEZBTFNFLAogICAgICAgICAgICAgICAgICAgICAgZmlnLmFsaWduID0gJ2RlZmF1bHQnLCAKICAgICAgICAgICAgICAgICAgICAgIHdhcm5pbmcgPSBGQUxTRSwgCiAgICAgICAgICAgICAgICAgICAgICBmaWcuY2FwID0iRmlnLiAzMCIsIAogICAgICAgICAgICAgICAgICAgICAgb3V0LndpZHRoPSIxMDAlIikKCm9wdGlvbnMocmVwci5wbG90LmhlaWdodCA9IDUsIHJlcHIucGxvdC53aWR0aCA9IDYpCm9wdGlvbnModGlkeXZlcnNlLnF1aWV0ID0gVFJVRSkKCmBgYAogCgpgYGB7cn0KIyBUZW5zb3JmbG93IEV4YW1wbGUKCmxpYnJhcnkodGVuc29yZmxvdykKbGlicmFyeShyZXRpY3VsYXRlKQoKIyBYX3RyYWluIGFuZCBZX3RyYWluIGRhdGEKCnRyYWluX1ggPSBjKDMuMyw0LjQsNS41LDYuNzEsNi45Myw0LjE2OCw5Ljc3OSw2LjE4Miw3LjU5LDIuMTY3LAogICAgICAgICAgICAgICAgICAgICAgNy4wNDIsMTAuNzkxLDUuMzEzLDcuOTk3LDUuNjU0LDkuMjcsMy4xKQp0cmFpbl9ZIDwtIGMoMS43LDIuNzYsMi4wOSwzLjE5LDEuNjk0LDEuNTczLDMuMzY2LDIuNTk2LDIuNTMsMS4yMjEsCiAgICAgICAgICAgICAyLjgyNywzLjQ2NSwxLjY1LDIuOTA0LDIuNDIsMi45NCwxLjMpCm5fc2FtcGxlcyA8LSBsZW5ndGgodHJhaW5fWCkKCiMgUGFyYW1ldGVycyAKbGVhcm5pbmdfcmF0ZSA8LSAwLjAxCnRyYWluaW5nX2Vwb2NocyA8LSAxMDAwCmRpc3BsYXlfc3RlcCA8LSA1MAoKIyBUZW5zb3JmbG93IGdyYXBoIGlucHV0IAoKWCA9IHRmJHBsYWNlaG9sZGVyKGR0eXBlID0gImZsb2F0IikKWSA8LSB0ZiRwbGFjZWhvbGRlcihkdHlwZSA9ICJmbG9hdCIpCgojIFNldCBtb2RlbCB3ZWlnaHRzCgpXIDwtIHRmJFZhcmlhYmxlKHRmJHJhbmRvbV91bmlmb3JtKHNoYXBlKDFMKSwgLTEuMCwgMS4wKSkKI2IgPC0gdGYkVmFyaWFibGUodGYkemVyb3Moc2hhcGUgPSAoMCkpKQpiIDwtIHRmJFZhcmlhYmxlKHRmJHplcm9zKHNoYXBlKDFMKSkpCgojIENvbnN0cnVjdCBhIGxpbmVhciBtb2RlbCAKcHJlZCA8LSB0ZiRhZGQodGYkbXVsdGlwbHkoWCwgVyksIGIpCgojIE1lYW4gc3F1YXJlZCBlcnJvciAKY29zdCA9IHRmJHJlZHVjZV9zdW0oaW5wdXRfdGVuc29yID0gdGYkcG93KHByZWQgLSBZLCAyKSkvKDIqbl9zYW1wbGVzKQoKIyBHcmFkaWVudCBkZXNjZW50IApvcHRpbWl6ZXIgPSB0ZiR0cmFpbiRHcmFkaWVudERlc2NlbnRPcHRpbWl6ZXIobGVhcm5pbmdfcmF0ZSkkbWluaW1pemUoY29zdCkKCiMgTGF1bmNoIGdyYXBoIGFuZCBpbml0aWFsaXplIHZhcmlhYmxlcyAKCnNlc3MgPSB0ZiRTZXNzaW9uKCkKc2VzcyRydW4odGYkZ2xvYmFsX3ZhcmlhYmxlc19pbml0aWFsaXplcigpKQoKIyBGaXQgdGhlIGxpbmUgCmZvciAoc3RlcCBpbiAxOnRyYWluaW5nX2Vwb2Nocyl7CiAgc2VzcyRydW4oZmV0Y2hlcyA9IG9wdGltaXplciwgZmVlZF9kaWN0ID0gZGljdChYID0gdHJhaW5fWCwgWSA9dHJhaW5fWSkpCiAgaWYgKHN0ZXAgJSUyMCA9PSAwKQogICAgY2F0KHN0ZXAsICItIiwgc2VzcyRydW4oVyksIHNlc3MkcnVuKGIpLCAiXG4iKQp9CmBgYAoKCgo=