본문 바로가기
DeepLearning Framework & Coding/Tensorflow 2.X

[코드로 이해하는 딥러닝2-3] - .txt(.csv)파일 불러오기

by 노마드공학자 2021. 1. 7.

※ Tensorflow1문법을 2로만 바꾸는것이기에, 코드분석 위주로 진행하고있습니다.

[Tensorflow1 링크종합] https://limitsinx.tistory.com/50

 

 

※ 이 전글에서 정리한 코드/문법은 재설명하지 않으므로, 참고부탁드립니다.

코드만 해석하고 넘어가기에 다소 불친절한 글 일수 있습니다..

   개념적인 부분은 하기 링크에 따로 정리해두어, 참조 부탁드립니다.

 

https://limitsinx.tistory.com/34

 

[코드로 이해하는 딥러닝 7] - .txt(.csv)파일 불러오기

[코드로 이해하는 딥러닝 0] - 글연재에 앞서 https://limitsinx.tistory.com/27 [코드로 이해하는 딥러닝 1] - Tensorflow 시작 https://limitsinx.tistory.com/28 [코드로 이해하는 딥러닝 2] - Tensorflow 변..

limitsinx.tistory.com

 

학습할 데이터의 수가 엄청 많을때는 하나하나 기입할고 있을 수가 없기때문에

 

txt파일 혹은 csv파일을 불러와서 바로 읽어오는 방법에 대해 포스팅해보겠습니다.

 

 

[코드 전문]

import tensorflow as tf

import numpy as np

 

xy = np.loadtxt('../data-01-test-score.csv'delimiter=','dtype=np.float32)

x_data = xy[:, 0:-1]

y_data = xy[:, [-1]]

 

# Make sure the shape and data are OK

print(x_data, "\nx_data shape:", x_data.shape)

print(y_data, "\ny_data shape:", y_data.shape)

 

# data output

'''

[[ 73.  80.  75.]

 [ 93.  88.  93.]

 ...

 [ 76.  83.  71.]

 [ 96.  93.  95.]] 

x_data shape: (25, 3)

[[152.]

 [185.]

 ...

 [149.]

 [192.]] 

y_data shape: (25, 1)

'''

tf.model = tf.keras.Sequential()

# activation function doesn't have to be added as a separate layer. Add it as an argument of Dense() layer

tf.model.add(tf.keras.layers.Dense(units=1input_dim=3activation='linear'))

# tf.model.add(tf.keras.layers.Activation('linear'))

tf.model.summary()

 

tf.model.compile(loss='mse'optimizer=tf.keras.optimizers.SGD(lr=1e-5))

history = tf.model.fit(x_data, y_data, epochs=2000)

 

# Ask my score

print("Your score will be ", tf.model.predict([[10070101]]))

print("Other scores will be ", tf.model.predict([[6070110], [9010080]]))

 

 

[코드 분석]

data-01-test-score.csv라는 파일을 읽어와서 학습시켜보는 코드입니다.

학습을 위해선 본인이 머신러닝 코드를 돌리는 경로 안에, 해당 csv파일이 존재해야합니다.

 

해당 csv파일의 내부에는 이렇게 생겼는데요

 

73,80,75,152가 한개의 학습용 데이터입니다.

코드에서 x_data=[:,0:-1]은 마지막끝에 1개를 빼고 x_data로 넣겠다는 뜻으로, 73,80,75를 x_data에 저장하겠다는 뜻입니다.

 

y_data=[:,-1]은 맨끝의 152를 y_data에 저장하겠다는 뜻입니다.

 

이것만 알게되면, 하기 코드는 기존에 작성했던 Regression코드와 동일합니다.(글 최상단 첨부참조)

 

 

[결과값]

이를 2000번 학습시키면, 다음과 같은 결과 값을 얻을 수 있습니다.

 

100,70,101을 맞았을때는 186으로 예측하고 있는 모습을 확인할 수 있습니다.

댓글