티스토리 뷰
1. Loading data from file
1)이번 강좌에서는 여러가지 파일에 있는 데이터들을 사용하여 활용하는 방법에 대해 알아 볼 것입니다.
data-01.csv 파일을 이용할 것 이므로, data-01.csv파일을 준비합니다.(data file)
* data-01.csv File
73 | 80 | 75 | 152 |
93 | 88 | 93 | 185 |
89 | 91 | 90 | 180 |
96 | 98 | 100 | 196 |
73 | 66 | 70 | 142 |
53 | 46 | 55 | 101 |
69 | 74 | 77 | 149 |
47 | 56 | 60 | 115 |
87 | 79 | 90 | 175 |
79 | 70 | 88 | 164 |
69 | 70 | 73 | 141 |
70 | 65 | 74 | 141 |
93 | 95 | 91 | 184 |
79 | 80 | 73 | 152 |
70 | 73 | 78 | 148 |
93 | 89 | 96 | 192 |
78 | 75 | 68 | 147 |
81 | 90 | 93 | 183 |
88 | 92 | 86 | 177 |
78 | 83 | 77 | 159 |
82 | 86 | 90 | 177 |
86 | 82 | 89 | 175 |
78 | 83 | 85 | 175 |
76 | 83 | 71 | 149 |
96 | 93 | 95 | 192 |
2) data-file 준비가 완료 된후
2. 실습 코드
# Lab 4 Multi-variable linear regression
import tensorflow as tf
import numpy as np
tf.set_random_seed(777) # for reproducibility
#파일을 읽어 들인다. data-01.csv
xy = np.loadtxt('data-01-test-score.csv', delimiter=',', dtype=np.float32)
x_data = xy[:, 0:-1]
y_data = xy[:, [-1]]
#slicing
# Make sure the shape and data are OK
print(x_data.shape, x_data, len(x_data))
print(y_data.shape, y_data)
# placeholders for a tensor that will be always fed.
X = tf.placeholder(tf.float32, shape=[None, 3]) # X값 3
Y = tf.placeholder(tf.float32, shape=[None, 1]) # Y값 1
# 들어오는값 3(X) , 나가는값 1(Y) 로 생각
W = tf.Variable(tf.random_normal([3, 1]), name='weight')
b = tf.Variable(tf.random_normal([1]), name='bias')
# Hypothesis
hypothesis = tf.matmul(X, W) + b
# Simplified cost/loss function
cost = tf.reduce_mean(tf.square(hypothesis - Y))
# Minimize
optimizer = tf.train.GradientDescentOptimizer(learning_rate=1e-5)
train = optimizer.minimize(cost)
# Launch the graph in a session.
sess = tf.Session()
# Initializes global variables in the graph.
sess.run(tf.global_variables_initializer())
#학습 하는 부분 !
for step in range(2001):
cost_val, hy_val, _ = sess.run(
[cost, hypothesis, train], feed_dict={X: x_data, Y: y_data})
if step % 10 == 0:
print(step, "Cost: ", cost_val, "\nPrediction:\n", hy_val)
# Ask my score
print("Your score will be ", sess.run(
hypothesis, feed_dict={X: [[100, 70, 101]]}))
print("Other scores will be ", sess.run(hypothesis,
feed_dict={X: [[60, 70, 110], [90, 100, 80]]}))
>>> # Ask my score
... print("Your score will be ", sess.run(
... hypothesis, feed_dict={X: [[100, 70, 101]]}))
('Your score will be ', array([[181.73277]], dtype=float32))
>>>
>>> print("Other scores will be ", sess.run(hypothesis,
... feed_dict={X: [[60, 70, 110], [90, 100, 80]]}))
('Other scores will be ', array([[145.86266],
[187.2313 ]], dtype=float32))
정확하게 예측할 수 있음. feed_dict값을 넣어서 점수 예측가능
3. 실습을 마치고, 만약에 데이터 크기가 엄청 많은것들을 처리할때, tensorflow에서는 강력한 기능인 Queue Runners 지원한다
1) Queue Runner Structure
이제 이 값들을 tensorflow 데이터를 읽어오게 할 수 있게하는 batch가 있음.
2) 실습 해보기
# Lab 4 Multi-variable linear regression
# https://www.tensorflow.org/programmers_guide/reading_data
import tensorflow as tf
tf.set_random_seed(777) # for reproducibility
filename_queue = tf.train.string_input_producer(
['data-01-test-score.csv'], shuffle=False, name='filename_queue')
reader = tf.TextLineReader()
key, value = reader.read(filename_queue)
# Default values, in case of empty columns. Also specifies the type of the
# decoded result.
record_defaults = [[0.], [0.], [0.], [0.]]
xy = tf.decode_csv(value, record_defaults=record_defaults)
#빨아 들인다는생각으로 batch가 그 파일들의 내용을 쭉쭉 가져온다.
# collect batches of csv in
train_x_batch, train_y_batch = \
tf.train.batch([xy[0:-1], xy[-1:]], batch_size=10)
# placeholders for a tensor that will be always fed.
# 3,1(x,y)값을 반드시 맞춰줄 필요가 있으므로, 확인을 할것
X = tf.placeholder(tf.float32, shape=[None, 3])
Y = tf.placeholder(tf.float32, shape=[None, 1])
W = tf.Variable(tf.random_normal([3, 1]), name='weight')
b = tf.Variable(tf.random_normal([1]), name='bias')
# Hypothesis
hypothesis = tf.matmul(X, W) + b
# Simplified cost/loss function
cost = tf.reduce_mean(tf.square(hypothesis - Y))
# Minimize
optimizer = tf.train.GradientDescentOptimizer(learning_rate=1e-5)
train = optimizer.minimize(cost)
# Launch the graph in a session.
sess = tf.Session()
# Initializes global variables in the graph.
sess.run(tf.global_variables_initializer())
# Start populating the filename queue.
coord = tf.train.Coordinator()
threads = tf.train.start_queue_runners(sess=sess, coord=coord)
# 학습하는 과정
for step in range(2001):
x_batch, y_batch = sess.run([train_x_batch, train_y_batch])
cost_val, hy_val, _ = sess.run(
[cost, hypothesis, train], feed_dict={X: x_batch, Y: y_batch})
if step % 10 == 0:
print(step, "Cost: ", cost_val, "\nPrediction:\n", hy_val)
coord.request_stop()
coord.join(threads)
# Ask my score
print("Your score will be ",
sess.run(hypothesis, feed_dict={X: [[100, 70, 101]]}))
print("Other scores will be ",
sess.run(hypothesis, feed_dict={X: [[60, 70, 110], [90, 100, 80]]}))
'''
Your score will be [[ 177.78144836]]
Other scores will be [[ 141.10997009]
[ 191.17378235]]
'''
'AI' 카테고리의 다른 글
[머신러닝 - Tensorflow] Lec10-Logistic Regression의 cost 함수 설명 (0) | 2018.03.16 |
---|---|
[머신러닝-Tensorflow]Lec-09 Logic Classfication 가설 함수 정의 (0) | 2018.03.16 |
[머신러닝-Tensorflow]Lec-07 multi-variable linear regression을 TensorFlow에서 구현하기 (0) | 2018.03.11 |
[머신러닝-Tensorflow] Lec-06 multi-variable linear regression (0) | 2018.03.11 |
[머신러닝-Tensorflow] Lec-05 Cost Minimize 실습 (0) | 2018.03.11 |
- Total
- Today
- Yesterday
- 개발하는 관광이
- 감자개발자
- node.js
- Controller
- C langauge
- 백준알고리즘
- 알고리즘
- TensorFlow
- 텐서플로우
- 노드
- db
- 머신러닝
- MVC
- 안드로이드
- BFS
- 프로그래밍
- Algorigm
- 복습
- 스프링
- 초보자를 위한 C언어 300제
- Android
- 코드엔진
- 학교
- 리버싱
- programming
- 감자코딩
- node
- C언어
- Spring
- 백준
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |