2017-05-07 44 views
0

我想根据我本地存储的培训和测试图像做出简单的模型。我遵循了在这里找到的指南:https://www.tensorflow.org/tutorials/layers,但已经开始编辑代码以满足我自己的需求,并使用本地存储的图像而不是从某处加载的图像。运行张量流量分类器时出现奇怪的错误

mnist_classifier = learn.Estimator(
     model_fn=cnn_model_fn, model_dir="/tmp/mnist_convnet_model") 


tensors_to_log = {"probabilities": "softmax_tensor"} 
logging_hook = tf.train.LoggingTensorHook(
     tensors=tensors_to_log, every_n_iter=50) 

testData = [] 
testLabels = [] 
for filename in os.listdir('images'): 
    im = cv2.imread('images/' + filename) 
    testData.append(im) 
    testLabels.append(np.int32(1.0)) 

for filename in os.listdir('notImages'): 
    im = cv2.imread('notImages/' + filename) 
    testData.append(im) 
    testLabels.append(np.int32(0.0)) 

evalTestData = [] 
evalTestLabels = [] 
for filename in os.listdir('evalImages'): 
    im = cv2.imread('evalImages/' + filename) 
    evalTestData.append(im) 
    evalTestLabels.append(np.int32(1.0)) 

for filename in os.listdir('evalNotImages'): 
    im = cv2.imread('evalNotImages/' + filename) 
    evalTestData.append(im) 
    evalTestLabels.append(np.int32(0.0)) 

testData = np.array(testData) 
testLabels = np.array(testLabels) 
evalTestData = np.array(evalTestData) 
evalTestLabels = np.array(evalTestLabels) 

mnist_classifier.fit(
     x=testData, 
     y=testLabels, 
     batch_size=10, 
     steps=20000, 
     monitors=[logging_hook]) 

看来那么这适合命令揭开序幕下面的代码:

input_layer = tf.reshape(features, [-1, -1, -1, 3]) 

conv1 = tf.layers.conv2d(
     inputs=input_layer, 
     filters=32, 
     kernel_size=[5, 5], 
     padding="same", 
     activation=tf.nn.relu) 

这tf.layers.conv2d事情似乎会导致系统崩溃,因为我得到以下错误:

File "cnn_mnist.py", line 37, in cnn_model_fn 
    activation=tf.nn.relu) 

TypeError: Value passed to parameter 'input' has DataType string not in list of allowed values: float16, float32, float64 

我试图做一些谷歌搜索,但无法找到专门讨论这个问题的人。显然有些东西不应该是字符串。看起来我改变了这个代码,使它使用本地图像已经打破了一些我没有纠正的东西。有任何想法吗?

编辑:我打印的功能变量的类型,它说这是一个张量。然后我打印张量并得到这个:

Tensor("input:0", shape=(?, 1), dtype=string) 

这个dtype不应该是字符串和形状是错误的。似乎这可能是造成我的错误。任何想法如何解决它?

+0

首先检查你的'TESTDATA,testLabels,evalTestData,evalTestLabels',以确保它们都是数字或没有。 –

回答

0

通过添加以下行修正:

input_layer = tf.to_float(input_layer) 
相关问题