最近2018中文字幕在日韩欧美国产成人片_国产日韩精品一区二区在线_在线观看成年美女黄网色视频_国产精品一区三区五区_国产精彩刺激乱对白_看黄色黄大色黄片免费_人人超碰自拍cao_国产高清av在线_亚洲精品电影av_日韩美女尤物视频网站

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
數(shù)字識別代碼java java 數(shù)字識別

java導(dǎo)入mnist后怎樣識別一個(gè)數(shù)字

其實(shí)就是python怎么讀取binnary file

創(chuàng)新互聯(lián)專注于宜章網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠為您提供宜章營銷型網(wǎng)站建設(shè),宜章網(wǎng)站制作、宜章網(wǎng)頁設(shè)計(jì)、宜章網(wǎng)站官網(wǎng)定制、小程序設(shè)計(jì)服務(wù),打造宜章網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供宜章網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。

mnist的結(jié)構(gòu)如下,選取train-images

TRAINING SET IMAGE FILE (train-images-idx3-ubyte):

[offset] [type] [value] [description]

0000 32 bit integer 0x00000803(2051) magic number

0004 32 bit integer 60000 number of images

0008 32 bit integer 28 number of rows

0012 32 bit integer 28 number of columns

0016 unsigned byte ?? pixel

0017 unsigned byte ?? pixel

........

xxxx unsigned byte ?? pixel

也就是之前我們要讀取4個(gè) 32 bit integer

試過很多方法,覺得最方便的,至少對我來說還是使用

struct.unpack_from()

filename = 'train-images.idx3-ubyte'

binfile = open(filename , 'rb')

buf = binfile.read()

先使用二進(jìn)制方式把文件都讀進(jìn)來

index = 0

magic, numImages , numRows , numColumns = struct.unpack_from('IIII' , buf , index)

index += struct.calcsize('IIII')

然后使用struc.unpack_from

'IIII'是說使用大端法讀取4個(gè)unsinged int32

然后讀取一個(gè)圖片測試是否讀取成功

im = struct.unpack_from('784B' ,buf, index)

index += struct.calcsize('784B')

im = np.array(im)

im = im.reshape(28,28)

fig = plt.figure()

plotwindow = fig.add_subplot(111)

plt.imshow(im , cmap='gray')

plt.show()

'784B'的意思就是用大端法讀取784個(gè)unsigned byte

完整代碼如下

import numpy as np

import struct

import matplotlib.pyplot as plt

filename = 'train-images.idx3-ubyte'

binfile = open(filename , 'rb')

buf = binfile.read()

index = 0

magic, numImages , numRows , numColumns = struct.unpack_from('IIII' , buf , index)

index += struct.calcsize('IIII')

im = struct.unpack_from('784B' ,buf, index)

index += struct.calcsize('784B')

im = np.array(im)

im = im.reshape(28,28)

fig = plt.figure()

plotwindow = fig.add_subplot(111)

plt.imshow(im , cmap='gray')

plt.show()

只是為了測試是否成功所以只讀了一張圖片

怎么用java實(shí)現(xiàn)圖片里面的數(shù)字識別

圖片是由點(diǎn)組成(或者是別的方法),記錄點(diǎn)的位置、顏色,控制點(diǎn)就行了。至于ocr,有難度,首先要制作文字的變化范圍及整個(gè)字各部分的聯(lián)系,這還是簡單的。然后,圖像分解就行了。額,我不會編程,稍微會點(diǎn)c++,所以這個(gè)回答就是假設(shè)如果我做這種程序的思路。

用java語言寫一個(gè)判斷一個(gè)整數(shù)是否為質(zhì)數(shù)的程序(要求利用三種方法逐步優(yōu)化實(shí)現(xiàn))

我寫了幾種方法,并逐步優(yōu)化,并且對每一種方法進(jìn)行了1000000次的調(diào)用測試每種方法的速度,僅供參考:

import?java.math.BigInteger;

public?class?Test_04?{

/**

*?最笨重的一種方法,用該整數(shù)分別除以比它小的數(shù),看是否能被整除

*/

public?boolean?isPrimeNum_1(int?num)?{

//?識別小于2的數(shù)

if?(num??2)?{

return?false;

}

for?(int?i?=?2;?i??num;?i++)?{

if?(num?%?i?==?0)?{

return?false;

}

}

return?true;

}

/**

*?優(yōu)化第一種方法br

*?1、偶數(shù)不可能是質(zhì)數(shù)br

*?2、對于大于2的數(shù),如果一個(gè)數(shù)a大于數(shù)b的一半,那么b不可能被a整除

*/

public?boolean?isPrimeNum_2(int?num)?{

//?2特殊處理

if?(num?==?2)?{

return?true;

}

//?識別小于2的數(shù)和偶數(shù)

if?(num??2?||?num?%?2?==?0)?{

return?false;

}

int?max?=?num?/?2;

for?(int?i?=?3;?i??max;?i?+=?2)?{

if?(num?%?i?==?0)?{

return?false;

}

}

return?true;

}

/**

*?在第二種方法上再次優(yōu)化,利用數(shù)字的性質(zhì):br

*?一個(gè)數(shù)不是素?cái)?shù)就是合數(shù),那么一定可以由兩個(gè)自然數(shù)相乘得到,其中一個(gè)大于或等于它的平方根,br

*?一個(gè)小于或等于它的平方根,并且成對出現(xiàn)。br

*?這樣就可以把計(jì)算量大幅度減少

*/

public?boolean?isPrimeNum_3(int?num)?{

if?(num?==?2)?{

return?true;//?2特殊處理

}

if?(num??2?||?num?%?2?==?0)?{

return?false;//?識別小于2的數(shù)和偶數(shù)

}

double?sqrt?=?Math.sqrt(num);

for?(int?i?=?3;?i?=?sqrt;?i?+=?2)?{

if?(num?%?i?==?0)?{

return?false;

}

}

return?true;

}

/**

*?Java中的BigInteger中已經(jīng)寫好了一個(gè)判斷是否為質(zhì)數(shù)的方法,直接用就可以了

*/

public?boolean?isPrimeNum_4(int?num)?{

BigInteger?integer?=?BigInteger.valueOf(num);

return?integer.isProbablePrime(1);

}

public?static?void?main(String[]?args)?{

Test_04?test_04?=?new?Test_04();

int?num?=?991;

System.out.println(test_04.isPrimeNum_1(num));

long?startTime?=?System.currentTimeMillis();

for?(int?i?=?0;?i??1000000;?i++)?{

test_04.isPrimeNum_1(num);

}

long?endTime?=?System.currentTimeMillis();

System.out.println("第一種方法運(yùn)行時(shí)間:"?+?(endTime?-?startTime)?+?"ms");

System.out.println(test_04.isPrimeNum_2(num));

startTime?=?System.currentTimeMillis();

for?(int?i?=?0;?i??1000000;?i++)?{

test_04.isPrimeNum_2(num);

}

endTime?=?System.currentTimeMillis();

System.out.println("第二種方法運(yùn)行時(shí)間:"?+?(endTime?-?startTime)?+?"ms");

System.out.println(test_04.isPrimeNum_3(num));

startTime?=?System.currentTimeMillis();

for?(int?i?=?0;?i??1000000;?i++)?{

test_04.isPrimeNum_3(num);

}

endTime?=?System.currentTimeMillis();

System.out.println("第三種方法運(yùn)行時(shí)間:"?+?(endTime?-?startTime)?+?"ms");

System.out.println(test_04.isPrimeNum_4(num));

startTime?=?System.currentTimeMillis();

for?(int?i?=?0;?i??1000000;?i++)?{

test_04.isPrimeNum_4(num);

}

endTime?=?System.currentTimeMillis();

System.out.println("第四種方法運(yùn)行時(shí)間:"?+?(endTime?-?startTime)?+?"ms");

}

}

輸出結(jié)果:

true

第一種方法運(yùn)行時(shí)間:2732ms

true

第二種方法運(yùn)行時(shí)間:671ms

true

第三種方法運(yùn)行時(shí)間:68ms

true

第四種方法運(yùn)行時(shí)間:1064ms


分享名稱:數(shù)字識別代碼java java 數(shù)字識別
網(wǎng)站URL:http://fisionsoft.com.cn/article/ddjddec.html