「java转化mnist」java转化python
本篇文章给大家谈谈java转化mnist,以及java转化python对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
Java怎样调用TensorFlow
tensorflow训练模型通常使用Python api编写,这些模型保存后可以在Java中调用。
python中训练完成,模型保存使用如下api保存:
1234
# 保存二进制模型output_graph_def = tf.graph_util.convert_variables_to_constants(sess, sess.graph_def, output_node_names=['y_conv_add'])with tf.gfile.FastGFile('/logs/mnist.pb', mode='wb') as f: f.write(output_graph_def.SerializeToString())
保存为二进制pb文件,主要的点是output_node_names数组,该数据的名称表示需要保存的tensorflow tensor名。既是在python中定义模型时指定的计算操作的name。填写什么就保存到什么节点。在cnn模型中,通常是分类输出的名称。
例如模型定义时代码为:
123
y_conv = tf.add(tf.matmul(h_fc1_drop, W_fc2), b_fc2, name='y_conv_add') # cnn输出层,名称y_conv_add# 训练和评价模型softmax = tf.nn.softmax_cross_entropy_with_logits(labels=y_, logits=y_conv)
模型在java中使用需要关心模型输入tensor和输出tensor名,所以定义模型时,所有的输入tensor最好指定名称,如输入x和dropout名。
java中调用代码片段:
12345678910111213
public static void main(String[] args) { String labels = "17,16,7,8,3,15,4,14,2,5,12,18,9,10,1,11,13,6"; TensorFlowInferenceInterface tfi = new TensorFlowInferenceInterface("D:/tf_mode/output_graph.pb","imageType"); final Operation operation = tfi.graphOperation("y_conv_add"); Output output = operation.output(0); Shape shape = output.shape(); final int numClasses = (int) shape.size(1); float[] floatValues = getImagePixel("D:/tf_mode/ci/ci/333.jpg"); //将图片处理为输入对应张量格式 // 输入图片 tfi.feed("x_input", floatValues, 1, 2048); //将数据复制给输入张量x_input即为模型定义时的x名称 tfi.run(new String[] { "y_conv_add" }, false);//输出张量 float[] outPuts = new float[numClasses];//结果分类 tfi.fetch("y_conv_add", outPuts);//接收结果 outPuts保存的即为预测结果对应的概率,最大的一个通常为本次预测结果
java是做数据分析最好的方法吗
不算是。只要是计算机语言都可以做数据分析,但是因为python的特性,加上python的扩展生态,(有很多扩展包)更多的人选择用python,尤其是panda库。
资料补充:
做数据分析的人都知道,开展项目第一步就是建立工程并导入数据,所以数据分析师如何进阶,更好的学会使用数据集是非常重要的,为此,小编为大家精心整理了九个公开的数据科学项目的数据集,可供大家创建项目。
什么是数据集?
很多小伙伴们不知道什么是数据集。数据集实际上就是一种由数据组合的集合,又称为数据集合、资料集或资料集合。例如:
l 小米10 8+128G 冰海蓝 SA\NSA双模5G手机 ¥3799.00
l 小米10 8+128G 蜜桃金 SA\NSA双模5G手机 ¥3799.00
l 小米10 8+128G 钛银黑 SA\NSA双模5G手机 ¥3799.00
l 小米10 8+256G 冰海蓝 SA\NSA双模5G手机 ¥3999.00
l 小米10 8+256G 蜜桃金 SA\NSA双模5G手机 ¥3999.00
l 小米10 8+256G 钛银黑 SA\NSA双模5G手机 ¥3999.00
这就是一组数据集。它涵盖了某一特定商品的某些信息,每一列代表一个特定变量。每一行都对应于某一成员的数据集的问题。每个数值被称为数据资料。对应于行数,该数据集的数据可能包括一个或多个成员。这些特定的信息将对我们的需要做的数据报告起着关键性作用。
利用这些数据集进行分析,对数据分析师进阶是非常有帮助的。
有哪些公开的数据集可供练习?
1.ImageNet数据集:
ImageNet数据集主要用于机器学习以及计算机视觉研究领域。每条记录都包含边界框和相应的类标签。ImageNet为每个同义词集都提供了1000张图像,而且,你可以直接在ImageNet中查看图片网址。
2.COCO数据集:
COCO数据集是大规模的对象检测、分割和字幕的数据集,通过大量使用Amazon Mechanical Turk来收集数据。该数据集具有针对80个对象类别的150万个对象实例。
3.鸢尾花数据集:
鸢尾花数据集是专门为初学者设计的数据集。借助这些数据,小白可以使用机器学习算法构建简单的项目。值得一提的是,该数据集中的所有属性都是真实的。鸢尾花数据集的大小很小,因此小白不需要对数据进行预处理。
所谓预处理,就是在处理数据之前,将数据进行整理和清除。比如,你现在正在做饭,你想找到胡椒粉,并把它洒到锅里。但是所有的作料都被你放到了一起,运气不好的话你要花很长时间才能找到胡椒粉。找到后,你准备撒到锅里,发现菜已经糊了。因此,我们事先要将作料摆放整齐,等做饭的时候才会更方便。
4.乳腺癌威斯康星州(诊断)数据集:
乳腺癌威斯康星州(诊断)数据集是机器学习中最流行的数据集之一。此数据集基于对乳腺癌的分析。
5.Twitter情绪分析数据集:
情绪分析是自然语言处理(NLP)中最常见的应用程序之一。你可以使用Twitter情绪分析数据集建立基于情绪分析的模型。众所周知,我们的川普同志可以说是Twitter的常驻“相声演员”,没准你还能浏览到他发表过的言论呢~
6.MNIST数据集:
MNIST数据集建立在手写数据上。该数据集易于初学者使用,有助于了解实际数据上的技术和深度学习识别模式。你无需花费太多时间对数据进行预处理。对于热衷于深度学习或机器学习的初学者来说,MINIST数据集是一个很好的选择。
7.Fashion MNIST数据集:
Fashion MNIST数据集建立在衣服数据上,可用于深度学习图像分类问题以及机器学习。该数据集易于初学者使用,你不需要花费太多时间在数据预处理上。同时,FashionMNIST数据集可以帮助你了解和学习实际数据上的技术和深度学习中的ML技术以及模式识别方法。
8.亚马逊评论数据集:
亚马逊评论数据集也是用于NLP(自然语言处理)的数据集。借助亚马逊评论数据集,你不仅可以了解到业务会出现的实质性问题,而且还能从中了解到近几年各种商品的销售趋势。没准研究着研究着,你也能开一家网店了。
9.垃圾短信分类器数据集:
垃圾短信分类数据集可以帮助你预测垃圾邮件。借助垃圾短信分类数据集,小白可以使用机器学习分类算法构建简单的项目。不仅如此,你还能学习到为什么你的手机能够自动识别出垃圾短信,想想就有些神奇呢~
java导入mnist后怎样识别一个数字
其实就是python怎么读取binnary file
mnist的结构如下,选取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个 32 bit integer
试过很多方法,觉得最方便的,至少对我来说还是使用
struct.unpack_from()
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')
然后使用struc.unpack_from
'IIII'是说使用大端法读取4个unsinged int32
然后读取一个图片测试是否读取成功
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个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转化mnist和java转化python的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
发布于:2022-11-28,除非注明,否则均为
原创文章,转载请注明出处。