網路城邦
上一篇 回創作列表 下一篇   字體:
使用 28x28 bmp測試訓練後的模型 tensorflow mnist
2019/03/06 16:19:04瀏覽118|回應0|推薦0
訓練CNN/mnist好後,用以下指令保存模型及weight

model.save("05.h5")


關於BMP

24 bit bmp檔, 檔頭54 byte, 之後每個像素RGB佔用3 byte,

28x28像素 = 54 + 28x28x3 = 54+2352 = 2406 byte

用apt-get kolourpaint4可以產生bmp


讀取bmp時要注意2點

1.bmp是由下行往上行存,讀入圖檔要反向

2.bmp的白是255, mnist的圖,白是0



from keras.datasets import mnist  

from keras.models import load_model

from keras.utils import np_utils

from keras.layers import Conv2D, MaxPooling2D

from keras.layers import Dense, Activation, Flatten

from keras.preprocessing.image import ImageDataGenerator

import matplotlib.pyplot as plt 

import keras

import tensorflow as tf

import numpy as np




def plot_image(image):

    fig=plt.gcf()

    fig.set_size_inches(2,2)

    plt.imshow(image,cmap=binary)

    plt.show()




model = load_model("05_cnn.h5")




(X_train_image, y_train_label), (X_test_image, y_test_label) = mnist.load_data()  




print(X_train_image.shape)

x_train = X_train_image.reshape(X_train_image.shape[0],28,28,1)

print(x_train.shape)

x_train = x_train.astype(float32)

x_train /= 255

y_train = keras.utils.to_categorical(y_train_label, num_classes=10)

x_test = X_test_image.reshape(X_test_image.shape[0], 28, 28, 1)

x_test = x_test.astype(float32)

x_test /= 255

y_test = keras.utils.to_categorical(y_test_label, num_classes=10)




def draw_1_28_28_1(np_ary_1_28_28_1):

      for i2 in range(0,28) :

        st1=""

        for i3 in range(0,28) :

            if np_ary_1_28_28_1[0][i2][i3][0] == 0 :

                st1=st1+" "

            else:

                st1=st1+"*"

        print(st1)  




def prediction_one(test_id):

    x1 = x_test[test_id:(test_id+1)]

    print(x1.shape)

    draw_1_28_28_1(x1)    

    plot_image(X_test_image[test_id]);

    prediction = model.predict(x1)

    answser=np.argmax(prediction[0])

    return answser




for i1 in range(0,1):  

  print("id=",i1," p=",prediction_one(i1))



import array as ary

x3=np.zeros((28,28),dtype=float32)

print(x3.shape)


with open("./6.bmp","rb") as f_bmp1: 

    byte_ary = f_bmp1.read(54) 

    print(str(byte_ary[0:2]))

    for i1 in range(0,28):

        st1=""

        byte_ary = f_bmp1.read(28*3)

        x2=np.frombuffer(byte_ary,np.uint8,28*3,0)

        #x2=x2.dtype=float32

        x2=x2.reshape(28,3)

        for i3 in range(0,28) :

            x3[28-i1-1][i3]=255-x2[i3][0]   


        for i3 in range(0,28) :

            if x2[i3][0] == 0 :

                st1=st1+" "

            else:

                st1=st1+"#"    

        print(i1,st1)       

    

for i2 in range(0,28) :

    st1=""

    for i3 in range(0,28) :

        if x3[i2][i3] == 0 :

            st1=st1+" "

        else:

            st1=st1+"*"

    print(st1)

    

    

x5=x3.reshape(1,28,28,1)    

x5 /=255

    

predi1 = model.predict(x5)

print("prediction-"np.argmax(predi1[0]))

( 心情隨筆心情日記 )
回應 列印 加入我的文摘
上一篇 回創作列表 下一篇

引用
引用網址:https://classic-blog.udn.com/article/trackback.jsp?uid=greatcat&aid=125073750