Ich versuche einen stochastischen Gradientenabstiegscode, den ich im Tensorfluss gemacht habe, zu trainieren und 25112 Bilder ähnlich dem MINST-Datensatz zu trainieren (die Dateien sehen genau aus mag ich). Ich entschuldige mich, wenn dies ein einfaches Problem ist, aber ich bin unsicher, wie es weitergehen soll. Vielen Dank!ValueError: alle Eingabearrays müssen die gleiche Anzahl von Dimensionen haben - für Tensorflow Manual MSINT
Ich laufe in diesen Fehler:
"Valueerror: alle Eingabefelder gleiche Anzahl von Dimensionen haben müssen"
Auf dieser Codezeile:
x = np.c_ [ np.ones (n), image_tensor2] # line75
Und ich kann nicht feststellen, warum das nicht funktioniert - ich denke, es ist etwas mit dem zu tun hat, wie ich in den Bilddateien gelesen habe, aber ich kann nicht sicher sein. Hier ist mein Code
import numpy as np
import tensorflow as tf
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
import argparse
#load the images in order
vector = [] #initialize the vector
filenames = tf.train.match_filenames_once("train_data/*.jpg")
filename_queue = tf.train.string_input_producer(filenames)
image_reader = tf.WholeFileReader()
_, image_file = image_reader.read(filename_queue)
image_orig = tf.image.decode_jpeg(image_file)
image = tf.image.resize_images(image_orig, [28, 28])
image.set_shape((28, 28, 3))
images = tf.image.decode_jpeg(image_file)
with tf.Session() as sess:
tf.global_variables_initializer().run()
coord = tf.train.Coordinator()
threads = tf.train.start_queue_runners(coord=coord)
image_tensor = sess.run([images])
#print(image_tensor)
#coord.request_stop()
#coord.join(threads)
image_tensor2 = np.array(image_tensor)
n_samples = image_tensor2.shape[0]
lossHistory=[]
ap = argparse.ArgumentParser()
ap.add_argument("-b", "--batch-size", type = int, default =32, help = "size of SGD mini-batches")
args = vars(ap.parse_args())
# Create the model
x = tf.placeholder(tf.float32, [None, 784]) #784=28*28
W = tf.Variable(tf.zeros([784, 10]))
b = tf.Variable(tf.zeros([10]))
y = tf.matmul(x, W) + b
y_ = tf.placeholder(tf.float32, [25112, 10])
sess = tf.InteractiveSession()
tf.global_variables_initializer().run()
# Train
def next_batch(x, batchSize):
for i in np.arange(0, x.shape[0], batchSize):
yield (x[i:i + batchSize])
def gradient_descent_2(alpha, x, y, numIterations):
m,n = (784, 25112) # number of samples
theta = np.ones(n)
theta.fill(0.01)
x_transpose = x.transpose()
losshistory=[]
count = 0
batchX = 50
for (batchX) in next_batch(x, args["batch_size"]):
for iter in range(0, numIterations):
hypothesis = np.dot(x, theta)
loss = hypothesis - y
J = np.sum(loss ** 2)/(2 * m) # cost
lossHistory.append(J)
print("iter %s | J: %.3f" % (iter, J))
gradient = np.dot(x_transpose, loss)/m
theta = theta - alpha * gradient
return theta
if __name__ == '__main__':
m, n = (784, 25112)
x = np.c_[ np.ones(n), image_tensor2] # insert column
alpha = 0.001 # learning rate
theta = gradient_descent_2(alpha, image_tensor2, y_, 50)
fig = plt.figure()
print(theta)
gut. Was sind die Abmessungen von image_tensor2 (image_tensor2.shape)? – putonspectacles