내용 |
import tensorflow
tensorflow.__version__
# import tensorflow as tf
import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from tensorflow import keras
fashion_mnist = keras.datasets.fashion_mnist
(train_images, train_labels), (test_images, test_labels) = fashion_mnist.load_data()
class_names = ['T-shirt/top', 'Trouser', 'Pullover', 'Dress', 'Coat',
'Sandal', 'Shirt', 'Sneaker', 'Bag', 'Ankle boot']
# train_images.shape
# train_labels
plt.figure()
plt.imshow(train_images[0])
plt.colorbar()
plt.grid(False)
plt.show()
# train_images = train_images / 255.0
# test_images = test_images / 255.0
plt.figure(figsize=(10,10))
for i in range(25):
plt.subplot(5,5,i+1)
plt.xticks([])
plt.yticks([])
plt.grid(False)
plt.imshow(train_images[i], cmap=plt.cm.binary)
plt.xlabel(class_names[train_labels[i>)
plt.show()
from sklearn.preprocessing import OneHotEncoder
enc = OneHotEncoder()
enc.fit(train_labels.reshape(-1, 1))
train_labels_oh = enc.transform(train_labels.reshape(-1, 1))
x = tf.placeholder(tf.float32, [None, 784])
y = tf.placeholder(tf.float32, [None, 10])
# 은닉층 정의
# W_hidden = tf.Variable(tf.zeros([784, 128])) #
W_hidden = tf.Variable(tf.random.normal([784, 128], seed=42)) # mean=0, stddev=1.0
out_hidden = tf.nn.sigmoid(tf.matmul(x, W_hidden))
# 출력층 정의
W_o = tf.Variable(tf.random.normal([128, 10]))
h = tf.nn.softmax(tf.matmul(out_hidden, W_o))
cross_entropy = -tf.reduce_sum(y * tf.log(h), reduction_indices=[1])
loss = tf.reduce_mean(cross_entropy)
train_step = tf.train.GradientDescentOptimizer(1).minimize(loss)
init = tf.global_variables_initializer()
sess = tf.Session()
sess.run(init)
train_X = np.reshape(train_images, [-1, 784])
train_X.shape, train_X.dtype
# train_X[0]
# train_labels_oh.toarray()
for i in range(100):
_, loss_value = sess.run([train_step, loss],
feed_dict={x: train_X,
y: train_labels_oh.toarray()})
if i % 10 == 0:
print('Step %d, %.5f' % (i, loss_value))
pred = sess.run(h, feed_dict={x :np.reshape(test_images, [-1, 784])})
pd.crosstab(test_labels,
np.argmax(pred, axis=1))
from sklearn.metrics import accuracy_score
accuracy_score(test_labels, np.argmax(pred, axis=1)) |