我在使用Python 2.7在Tensorflow 1.3.0中实现DNNClassifier时遇到错误.我从Tensorflow tf.estimator Quickstart教程中获取了示例代码,我想用自己的数据集运行它:3D坐标和10个不同的类(int标签).这是我的实现:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
def ReadLabels(file):
#load the labels from test file here
labelFile = open(file, "r")
Label = labelFile.readlines();
returnL = [[Label[i][j+1] for j in range(len(Label[0])-3)] for i in range(len(Label))]
returnLint = list();
for i in range(len(returnL)):
tmp = ''
for j in range(len(returnL[0])):
tmp += str(returnL[i][j])
returnLint.append(int(tmp))
return returnL, returnLint
def NumpyReadBin(file,numcols,type):
#load the data from binary file here
import numpy as np
trainData = np.fromfile(file,dtype=type)
numrows = len(trainData)/numcols …Run Code Online (Sandbox Code Playgroud) 我目前正在同一个类中用c ++实现不同的opencv机器学习工具.因此,我遇到了将超类的指针向下转换cv::ml::StatModel为子类的问题cv::ml::SVM(例如).
在在线教程中,人们通常会发现opencv分类器的实现,如下所示:
cv::Ptr<cv::ml::SVM> classifier = cv::ml::SVM::create();
Run Code Online (Sandbox Code Playgroud)
我想要做的是在类构造函数中进行动态转换.这是我的类变量的一部分:
class Classifier{
private:
cv::Ptr<cv::ml::StatModel> classifier;
cv::Ptr<cv::ml::SVM> SVM;
//... followed by more code };
Run Code Online (Sandbox Code Playgroud)
在我的构造函数中:
Classifier::Classifier(const char* filename, cv::ml::SVM& svm){
bool load = Classifier::getData(filename);
if (load==0){
cout << "Error opening file!" << endl;
}
else{
classifier = &svm;
//Here I want to do something linke this, just with cv::Ptr:
//the following line gives compiler errors because c++ does not know that cv::Ptr is a pointer...
SVM = dynamic_cast<cv::ml::SVM*>(classifier);
Classifier::setUpSVM(); …Run Code Online (Sandbox Code Playgroud)