Python-Tensorflow不兼容形状有问题

我正在尝试实现对图像进行简单二进制分类的感知器。但是我在运行时遇到以下错误:

tensorflow.python.framework.errors_impl.InvalidArgumentError: Incompatible shapes: [2,1075] vs. [1075,2]

但是一定可以。所有形状都符合我的观点。这是我的全部代码:

import tensorflow.compat.v1 as tf
from sklearn.preprocessing import MinmaxScaler
from PIL import Image,ImageDraw
from os import walk

#pixToArray convert image to 1D array
def pixToArray(pix,w,h):
    rez = [0] * h * w
    for i in range(h):
        for j in range(w):
            p=pix[j,i]
            if type(p)==int:
                rez[i * w + j] = p
            else:
                a = p[0]
                b = p[1]
                c = p[2]
                rez[i * w + j] = (a + b + c) / 3
    return rez;

print("programm start")

images = []
for (dirpath,dirnames,filenames) in walk("0/"):
    images.extend(filenames)
    break
image = Image.open("0/" + images[0])
n = image.size[0] * image.size[1] 
pixArray = pixToArray(image.load(),image.size[0],image.size[1])

trainX = []
trainY = []
for i in range(len(images)):
    image = Image.open("0/" + images[0])
    trainX.append(pixToArray(image.load(),image.size[1]))
    trainY.append([1,0])

images = []
for (dirpath,filenames) in walk("3/"):
    images.extend(filenames)
    break

for i in range(len(images)):
    image = Image.open("3/" + images[0])
    trainX.append(pixToArray(image.load(),image.size[1]))
    trainY.append([0,1])

print("data reading end")

scaler = MinmaxScaler(feature_range=(-1,1))
scaler.fit(trainX)
trainX = scaler.transform(trainX)

n_stocks = n

n_neurons_1 = 1024
n_neurons_2 = 512
n_neurons_3 = 256
n_neurons_4 = 128
n_target = 2

tf.disable_eager_execution()

net = tf.InteractiveSession()

X = tf.placeholder(dtype=tf.float32,shape=[None,n_stocks])
Y = tf.placeholder(dtype=tf.float32,n_target])

sigma = 1
weight_initializer = tf.variance_scaling_initializer(mode="fan_avg",distribution="uniform",scale=sigma)
bias_initializer = tf.zeros_initializer()

W_hidden_1 = tf.Variable(weight_initializer([n_stocks,n_neurons_1]))
bias_hidden_1 = tf.Variable(bias_initializer([n_neurons_1]))

W_hidden_2 = tf.Variable(weight_initializer([n_neurons_1,n_neurons_2]))
bias_hidden_2 = tf.Variable(bias_initializer([n_neurons_2]))

W_hidden_3 = tf.Variable(weight_initializer([n_neurons_2,n_neurons_3]))
bias_hidden_3 = tf.Variable(bias_initializer([n_neurons_3]))

W_hidden_4 = tf.Variable(weight_initializer([n_neurons_3,n_neurons_4]))
bias_hidden_4 = tf.Variable(bias_initializer([n_neurons_4]))

W_out = tf.Variable(weight_initializer([n_neurons_4,n_target]))
bias_out = tf.Variable(bias_initializer([n_target]))

hidden_1 = tf.sigmoid(tf.add(tf.matmul(X,W_hidden_1),bias_hidden_1))
hidden_2 = tf.sigmoid(tf.add(tf.matmul(hidden_1,W_hidden_2),bias_hidden_2))
hidden_3 = tf.sigmoid(tf.add(tf.matmul(hidden_2,W_hidden_3),bias_hidden_3))
hidden_4 = tf.sigmoid(tf.add(tf.matmul(hidden_3,W_hidden_4),bias_hidden_4))

out = tf.transpose(tf.add(tf.matmul(hidden_4,W_out),bias_out))

mse = tf.reduce_mean(tf.squared_difference(out,Y))

opt = tf.train.AdamOptimizer().minimize(mse)

net.run(tf.global_variables_initializer())

print("neural network had configurated")

testX = []
image = Image.open("11.jpg")
testX.append(pixToArray(image.load(),image.size[1]))
image = Image.open("12.jpg")
testX.append(pixToArray(image.load(),image.size[1]))
image = Image.open("13.jpg")
testX.append(pixToArray(image.load(),image.size[1]))
image = Image.open("14.jpg")
testX.append(pixToArray(image.load(),image.size[1]))

image = Image.open("21.jpg")
testX.append(pixToArray(image.load(),image.size[1]))
image = Image.open("22.jpg")
testX.append(pixToArray(image.load(),image.size[1]))
image = Image.open("23.jpg")
testX.append(pixToArray(image.load(),image.size[1]))
image = Image.open("24.jpg")
testX.append(pixToArray(image.load(),image.size[1]))

testX = scaler.transform(testX)

batch_size = 64
epochs = 25
for e in range(epochs):
    print("training epochs ",e," started")

    net.run(opt,feed_dict={X: trainX,Y: trainY})

pred = net.run(out,feed_dict={X: testX})

print('pred ',pred)

print('programm finish');

请帮助。在这里,您可以找到包含培训和测试数据(279kb)的我的项目文件夹: https://drive.google.com/file/d/1hkpGkhmXyoIx1PxAFH7CkdxjHFVOORjK/view?usp=sharing

lxbagglo 回答:Python-Tensorflow不兼容形状有问题

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/2916955.html

大家都在问