import tensorflow as tf
import os
import pickle
from numpy import asarray, reshape
os.chdir('PATH')
with open('xSensor.pkl','rb') as file:
x_train = asarray(pickle.load(file))
with open('ySensor.pkl','rb') as file:
y_train = asarray(pickle.load(file))
def neural_network(data):
n_nodes_h1 = 1000
n_nodes_h2 = 1000
n_nodes_h3 = 500
hidden_layer_1 = {
'weights': tf.Variable(tf.random_normal([13, n_nodes_h1],dtype=tf.float64)),
'biases': tf.Variable(tf.random_normal([n_nodes_h1],dtype=tf.float64))
}
#Omitting some code that just defines a couple more layers in the same format as above
layer_1 = tf.matmul(data, hidden_layer_1['weights']) + hidden_layer_1['biases']
layer_1 = tf.nn.relu(layer_1)
#Omitting more code.
output = tf.matmul(layer_3, output['weights']) + output['biases']
return output
def train_network(x_t,y_t):
x = tf.placeholder(tf.float64, shape=[None, 13])
y = tf.placeholder(tf.float64)
prediction = neural_network(x_t)
y_t = reshape(y_t,(700,1))
cost = tf.reduce_mean(tf.losses.mean_squared_error(labels=y_t, predictions=prediction))
optimizer = tf.train.AdamOptimizer(0.005).minimize(cost) #learning rate by default is 0.01
n_epochs = 1000
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
for _ in range(0, n_epochs):
x_ = sess.run([optimizer,cost], feed_dict={x: x_t, y: y_t})
print("Loss is: ", x_[1])
train_network(x_train,y_train)
这是错误日志:
Traceback (most recent call last):
File "C:/Users/my system/Desktop/height_sensor.py", line 94, in <module>
train_network(x_train,y_train)
File "C:/Users/my system/Desktop/height_sensor.py", line 77, in train_network
prediction = neural_network(x_t)
File "C:/Users/my system/Desktop/height_sensor.py", line 59, in neural_network
layer_1 = tf.matmul(data, hidden_layer_1['weights']) + hidden_layer_1['biases']
File "C:\Users\my system\AppData\Local\Programs\Python\Python35\lib\site-packages\tensorflow\python\ops\math_ops.py", line 1844, in matmul
a = ops.convert_to_tensor(a, name="a")
...etc...
TypeError: Expected binary or unicode string, got [15.0126, 1.38684, 27.6, 1.6323, -0.624113, 8.97763, 2.06581, 8.88303, -0.689839, 9.13284, 353.183, 349.178, 210.498]
Process finished with exit code 1
很抱歉发布了这么多代码,我想减少发布waaaay但是我担心我可能会忽略导致错误的一件事。 如果有人能指出我正确的方向,我会非常高兴。 感谢
答案 0 :(得分:1)
发布所有代码,特别是所有错误追溯实际上是一个好主意。我能够让您的代码与一些虚假数据一起运行。我最好的猜测是关于pickle返回x_train
的值的方式;可能这个数组有太多的嵌套。我可以帮助更多地完成整个追溯,但无论如何,我建议输出一些x_train
并查看它是否格式正确。