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不应该是字符串和形状是错误的。似乎这可能是造成我的错误。任何想法如何解决它?
首先检查你的'TESTDATA,testLabels,evalTestData,evalTestLabels',以确保它们都是数字或没有。 –