这个错误的含义是什么?我在哪里做错了?’targets/Y:0′ TensorFlow: 形状错误。

我正在使用我的数据集构建一个训练分类器。我用TensorFlow编码了一热标签。将numpy数组图像数据和一热标签数据添加到训练数据中,然后添加到测试数据中。但我在使用tensorflow时遇到了形状错误。作为一个新手,我已经尝试搜索这个问题并试图自己解决,但失败了。

代码

from sklearn.preprocessing import OneHotEncoderimport tensorflow as tfimport numpy as npimport scipy.io as cioimport osimport matplotlib.pyplot as pltimport matplotlib.image as mpgfrom random import shuffleimport tflearnfrom tflearn.layers.conv import conv_2d, max_pool_2dfrom tflearn.layers.core import input_data, dropout, fully_connectedfrom tflearn.layers.estimator import regressionimport cv2a = cio.loadmat("D:/compCarsThesisData/data/misc/make_model_name.mat")images = "D:/compCarsThesisData/data/image/"IMG_SIZE = 64MODEL_NAME = 'Classification'LR = 1e-3b = a['make_names']# c = b.reshape(163,)d = []for i in range(b.size):  d.append(b[i][0][0])  print(d)labels_dic = {v: k for v, k in enumerate(d)}print(labels_dic)indices = np.arange(163)depth = 163y = tf.one_hot(indices,depth)# print(y)sess = tf.Session()result = sess.run(y)print(result)# labels = []# labels.append((result,labels_dic))# print(labels) for root, _, files in os.walk(images):   cdp = os.path.abspath(root)   for f in files:     name,ext = os.path.splitext(f)     if ext == ".jpg":       cip = os.path.join(cdp,f)       ci = mpg.imread(cip)       image = cv2.cv2.resize(ci,(IMG_SIZE,IMG_SIZE))       image = np.array(image)       print(image) training_data = [] training_data.append([np.array(image),result]) print("TrainingData",training_data) shuffle(training_data) np.save('training_data_with_One_Hot', training_data) testing_data = [] testing_data.append([np.array(image),result]) print("TestingDATA",testing_data) np.save('testing_data_with_One_Hot',testing_data) shuffle(testing_data)#If the data already created First Time#training_data = np.load('training_data_with_One_Hot.npy')#testing_data = np.load('testing_data_with_One_Hot.npy')train = training_datatest = testing_data[-50000:]X_train = np.array([i[0] for i in train]).reshape(-1, IMG_SIZE, IMG_SIZE, 3)y_train = [i[1] for i in train]X_test = np.array([i[0] for i in test]).reshape(-1, IMG_SIZE, IMG_SIZE, 3)y_test = [i[1] for i in test]print("YTEST",y_test)tf.reset_default_graph()convnet = input_data(shape=[None,IMG_SIZE,IMG_SIZE,3],name='input')convnet = conv_2d(convnet, 32, 5, activation='relu')convnet = max_pool_2d(convnet, 5)convnet = conv_2d(convnet, 64, 5, activation='relu')convnet = max_pool_2d(convnet, 5)convnet = conv_2d(convnet, 128, 5, activation='relu')convnet = max_pool_2d(convnet, 5)convnet = conv_2d(convnet, 64, 5, activation='relu')convnet = max_pool_2d(convnet, 5)convnet = conv_2d(convnet, 32, 5, activation='relu')convnet = max_pool_2d(convnet, 5)convnet = fully_connected(convnet, 1024, activation='relu')convnet = dropout(convnet, 0.8)convnet = fully_connected(convnet, 2, activation='softmax')convnet = regression(convnet, optimizer='adam', learning_rate=LR, loss='categorical_crossentropy', name='targets')model = tflearn.DNN(convnet, tensorboard_dir='log', tensorboard_verbose=0)model.fit({'input': X_train}, {'targets': y_train}, n_epoch=10,          validation_set=({'input': X_test}, {'targets': y_test}),          snapshot_step=500, show_metric=True, run_id=MODEL_NAME)

我一直得到的错误如下。请帮助我。

Run id: ClassificationLog directory: log/---------------------------------Training samples: 1Validation samples: 1--Traceback (most recent call last):  File "d:/ThesisWork/seriouswork/classifier_with_onehot.py", line 109, in <module>>    snapshot_step=500, show_metric=True, run_id=MODEL_NAME)                       16, in fit  File "C:\Users\zeele\Miniconda3\lib\site-packages\tflearn\models\dnn.py", line 216, in fit                                                                        ine 339, in fit    callbacks=callbacks)  File "C:\Users\zeele\Miniconda3\lib\site-packages\tflearn\helpers\trainer.py", line 818, in _trainine 339, in fit    show_metric)                                                                  on.py", line 929, in run  File "C:\Users\zeele\Miniconda3\lib\site-packages\tflearn\helpers\trainer.py", line 818, in _train                                                                on.py", line 1128, in _run    feed_batch)  File "C:\Users\zeele\Miniconda3\lib\site-packages\tensorflow\python\client\sessich has shape '(?, 2)'on.py", line 929, in run    run_metadata_ptr)  File "C:\Users\zeele\Miniconda3\lib\site-packages\tensorflow\python\client\session.py", line 1128, in _run    str(subfeed_t.get_shape())))ValueError: Cannot feed value of shape (1, 163, 163) for Tensor 'targets/Y:0', which has shape '(?, 2)'

回答:

你在这里指定result,它在training_data中使用,形状为(163, 163)

indices = np.arange(163)depth = 163y = tf.one_hot(indices,depth)result = sess.run(y)

而你的回归输出维度为2。我不确定你创建163个一热向量的意图是什么——你是想将某物分类到163个维度吗?无论如何,一热向量的维度和回归的输出必须匹配维度。

由于我不确定你如何打算为你的数据生成标签,这是我能给出的最佳建议。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注