Deep-Learning-Course/SecondSunday/mnist_phone_number.py

47 lines
1.5 KiB
Python
Raw Normal View History

%matplotlib inline
from tensorflow.examples.tutorials.mnist import input_data
import numpy as np
import matplotlib.pyplot as plt
mnist = input_data.read_data_sets('./SecondSunday/mnist_data', one_hot=True)
label_number = mnist.train.labels.argmax(axis=1)
number_imgs = {str(i):mnist.train.images[np.argwhere(label_number == i).squeeze()] for i in range(10)}
DATA_COUNT = 100
phone_number_digits = np.random.randint(10**9,10**10,size=(DATA_COUNT,10))
phone_number_digits = np.random.randint(10,size=(DATA_COUNT,10))
phone_number_digits.astype(str)
phone_number_strings = phone_number_digits.astype(str)
def pick_img(num):
rand_idx = np.random.randint(number_imgs[num].shape[0])
img = number_imgs[num][rand_idx].reshape(28,28)
return img
def create_phone_img(phon_no):
return np.hstack(tuple([pick_img(d) for d in phon_no]))
def create_phone_images(phone_array):
phone_number_images = []
for phon_no in phone_array:
phone_number_images.append(create_phone_img(phon_no))
return np.array(phone_number_images).reshape(-1,28*280)
phone_number_imgs = create_phone_images(phone_number_strings)
from keras.models import Sequential
from keras.layers import Dense, Activation
model = Sequential([
Dense(32, input_shape=(7840,)),
Activation('relu'),
Dense(10),
Activation('linear'),
])
model.compile(optimizer='rmsprop',
loss='categorical_crossentropy',
metrics=['accuracy'])
model.fit()
# plt.imshow(phone_number_imgs[np.random.randint(phone_number_imgs.shape[0])])