내용

글번호 1000
작성자 허진경
작성일 2019-12-13 12:23:23
제목 딥러닝(텐서플로우를)을 이용한 패션MNIST 데이터 분류
내용 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))
첨부파일 딥러닝(텐서플로우를)을 이용한 패션MNIST 데이터 분류.ipynb (85,883byte)