Machine learning Tensorflow将数据导入其中(SVHN)

Machine learning Tensorflow将数据导入其中(SVHN),machine-learning,tensorflow,Machine Learning,Tensorflow,我成功地安装了tensorflow,并遵循了有关MNIST数据的简易教程。 现在我想建立模型来训练SVHN数据。不幸的是,我找不到任何地方可以将数据导入模型。 基本上是每个模型的第一步。 数据保存在dict中,参数键为“X”,标签键为“y”。 形状如下: 打印列车数据['X']。形状 (32,32,373257) 打印列车数据['y']。形状 (73257,1) 有谁能给我一个提示或链接,如何将其成功地导入tensorflow 谢谢我认为一个好主意是将您的数据重塑为如下内容: 打印列车数据['X

我成功地安装了tensorflow,并遵循了有关MNIST数据的简易教程。 现在我想建立模型来训练SVHN数据。不幸的是,我找不到任何地方可以将数据导入模型。 基本上是每个模型的第一步。 数据保存在dict中,参数键为“X”,标签键为“y”。 形状如下:

打印列车数据['X']。形状

(32,32,373257)

打印列车数据['y']。形状

(73257,1)

有谁能给我一个提示或链接,如何将其成功地导入tensorflow


谢谢

我认为一个好主意是将您的数据重塑为如下内容:

打印列车数据['X']。形状
(73257,32*32*3)=(73257,3072)

我对tensorflow和python也不熟悉,但我认为可以通过将numpy与np.reformate结合使用来做到这一点

请参阅以下文档:


告诉我它是否适用于您:)

TensorFlow使用这个概念,其中:首先,定义一个图;接下来,训练一个图形;最后,使用图形

在定义图形时,需要创建占位符。类似于图形的输入节点。但是,此时,这些变量是“空”的,因为它们与您的输入数据无关

在训练时和测试时,您都可以通过引用这个预定义的输入节点将数据“馈送”到图形中

这个概念对你来说可能是新概念,我建议你学习一些教程。TensorFlow本身有一个很好的页面,叫做“TensorFlow力学101”和“基本用法”。 如果你更直观,我可以推荐YouTube频道“Dan Does Data”,他以幽默的方式探索TensorFlow的概念


如果你更喜欢喜欢示例代码的人,你可以考虑一个例子,在那里我为MNIST制作了一个小型美国有线电视新闻网。看看占位符“x”和“y”,它们是您感兴趣的变量。

SVNH的
digitStruct.mat
是matlab的文件格式,因此您应该转换它

下面是一个将
digitStruct.mat
转换为json的代码,或者您可以使用
scipy.io.loadmat

#编码:utf-8
#SVHN从digitStruct.mat完整数字文件中提取数据。数据可以下载
#街景房号(SVHN)网站:http://ufldl.stanford.edu/housenumbers.
#
#这是对以下脚本的A2iA调整(YG-2014年1月9日):
# http://blog.grimwisdom.com/python/street-view-house-numbers-svhn-and-octave
#
#digitStruct.mat文件的完整数字为tar(train.tar.gz、test.tar.gz和extra.tar.gz)
#仅与matlab兼容。这个Python程序可以在命令行上运行,并将生成
#数据集的json版本。
#
#命令行用法:
#SVHN_dataextract.py[-f input][-o output_,不带扩展名]
#>python SVHN_dataextract.py-f digitStruct.mat-o digitStruct
#
#问题:
#可以拆分为多个文件的功能已从原始文件中删除
#剧本。
#
导入TQM
进口h5py
导入optpass
从json导入JSONEncoder
parser=optparse.OptionParser()
parser.add_选项(“-f”,dest=“fin”,help=“Matlab完整数字SVHN输入文件”,default=“digitStruct.mat”)
parser.add_选项(“-o”,dest=“filePrefix”,help=“json输出文件的名称”,default=“digitStruct”)
选项,args=parser.parse_args()
fin=options.fin
#DigitStructFile只是h5py数据的包装。它基本上引用了
#inf:输入h5 matlab文件
#digitStructName将h5引用命名为所有文件名
#DigitStructBox将所有结构数据的h5参考值
类数字结构文件:
定义初始化(自我,inf):
self.inf=h5py.File(inf,'r')
self.digitStructName=self.inf['digitStruct']['name']
self.digitstructbox=self.inf['digitStruct']['bbox']
#getName返回第n(th)个digitStruct的“name”字符串。
def getName(self,n):
返回“”。在self.inf[self.digitStructName[n][0]].value]中为c加入([chr(c[0]))
#当只有一个bbox或一个bbox数组时,bboxHelper处理编码差异。
def bboxHelper(自身、属性):
如果len(attr)>1:
attr=[self.inf[attr.value[j].item()]。范围内j的值[0][0](len(attr))]
其他:
属性=[attr.value[0][0]]
返回属性
#getBbox返回第n个bbox的dict数据。
def getBbox(自身,n):
bbox={}
bb=self.digitstructbox[n]。项()
bbox['height']=self.bboxHelper(self.inf[bb][“height”])
bbox['label']=self.bboxHelper(self.inf[bb][“label”])
bbox['left']=self.bboxHelper(self.inf[bb][“left”])
bbox['top']=self.bboxHelper(self.inf[bb][“top”])
bbox['width']=self.bboxHelper(self.inf[bb][“width”])
返回bbox
def getDigitStructure(自身,n):
s=self.getBbox(n)
s['name']=self.getName(n)
返回s
#getAllDigitStructure返回输入文件中的所有digitStruct。
def getAllDigitStructure(自):
打印('开始获取所有数字结构')
返回[tqdm.tqdm(范围(len(self.digitStructName))]中i的self.getDigitStructure(i)]
#返回重新构造的数据集版本(一个结构,按方框数字排列)。
#
#返回此类命令的列表:
#“filename”:示例的文件名
#“框”:此类命令的列表(按数字排列):
#“标签”:1到9个对应的数字。10表示图像中的数字“0”。
#“左”、“上”:边界框的位置
#“宽度”、“高度”:边界框的尺寸
#
#注意:如果出现内存问题,我们可以将其转换为生成器。
按数字(自身)定义getAllDigitStructure_:
pictDat=self.getAllDigitStructure()
结果=[]
structCnt=1
打印('起始包装josn dict')
对于tqdm中的i.tqdm(范围(len(pictDat)):
item={'filename':pictDat[i][“name”]}
数字
    xTrain,xTest=np.mean(xTrain0,axis=2,keepdims=True),np.mean(xTest0,axis=2,keepdims=True);
xTrain/=255; xTest/=255
print(f'Min: {xTrain.min()}, Max: {xTrain.max()}')
yTrain[yTrain>9]=0; yTest[yTest>9]=0
print(f'Min: {yTrain.min()}, Max: {yTrain.max()}')
xTrain,xTest=np.moveaxis(xTrain,-1,0),np.moveaxis(xTest,-1,0)
print(xTrain.shape,xTest.shape)