TensorFlow regression with error :"could not convert string to float: "

TensorFlow regression with error :"could not convert string to float: "

问题:

ValueError:无法将字符串转换为浮点数:

我在这里坚持了好几天,有人告诉我 Stack Overflow 解决了我的问题。第一次提问,如有错误请多多包涵

该代码旨在找到 15 个输入和 1 个输出之间的关系,并在 Jupyter 下 运行。使用 'xlrd' 从 'data.xls' 中提取数据并存储到列表中。我计划通过计算均方误差来表示损失。

谢谢!

import xlrd
import numpy
import tensorflow as tf

book=xlrd.open_workbook('data.xls')
sheet0=book.sheet_by_index(0)
sheet_name=book.sheet_names()[0]

rows_number=sheet0.nrows

X=[]
for i in range(rows_number-1):
    temp=sheet0.row_values(i+1)
    del temp[0:4]
    X.append(temp)

Y=[]
for i in range(rows_number-1):
    temp=sheet0.row_values(i+1)
    Y.append([temp[3]])


w1= tf.Variable(tf.random_normal([15, 10],name='matrix1', stddev=1))
b1 = tf.Variable(tf.constant(0.1, shape=[10]))
w2= tf.Variable(tf.random_normal([10, 10],name='matrix2', stddev=1))
b2 = tf.Variable(tf.constant(0.1, shape=[10]))
w3= tf.Variable(tf.random_normal([10, 1],name='matrix3', stddev=1))

x = tf.placeholder(tf.float32, shape=(None, 15), name="x-input")
y_= tf.placeholder(tf.float32, shape=(None, 1), name='y-input')

a1= tf.add(tf.matmul(x, w1),b1)
a2=tf.add(tf.matmul(tf.nn.sigmoid(a1),w2),b2)
y=tf.matmul(tf.nn.sigmoid(a2),w3)
y=tf.nn.sigmoid(y)

loss = tf.losses.mean_squared_error(y_, y)
train=tf.train.AdamOptimizer(0.1).minimize(loss)

with tf.Session() as sess:

    init_op = tf.global_variables_initializer()
    sess.run(init_op)


    STEPS = 30000
    for i in range(STEPS):
        sess.run(train, feed_dict={x: X, y_: Y})

ValueError                                Traceback (most recent call last)
<ipython-input-22-de3ef36f5080> in <module>()
      7     STEPS = 30000
      8     for i in range(STEPS):
----> 9         sess.run(train, feed_dict={x: X, y_: Y})
     10 
     11 

~\Anaconda3\envs\ML\lib\site-packages\tensorflow\python\client\session.py in run(self, fetches, feed_dict, options, run_metadata)
    898     try:
    899       result = self._run(None, fetches, feed_dict, options_ptr,
--> 900                          run_metadata_ptr)
    901       if run_metadata:
    902         proto_data = tf_session.TF_GetBuffer(run_metadata_ptr)

~\Anaconda3\envs\ML\lib\site-packages\tensorflow\python\client\session.py in _run(self, handle, fetches, feed_dict, options, run_metadata)
   1102             feed_handles[subfeed_t] = subfeed_val
   1103           else:
-> 1104             np_val = np.asarray(subfeed_val, dtype=subfeed_dtype)
   1105 
   1106           if (not is_tensor_handle_feed and

~\Anaconda3\envs\ML\lib\site-packages\numpy\core\numeric.py in asarray(a, dtype, order)
    490 
    491     """
--> 492     return array(a, dtype, copy=False, order=order)
    493 
    494 

ValueError: could not convert string to float: 

我已经检查了两个列表X和Y的元素的数据类型。X的形状是(835,15),Y的形状是(835,1)。

这里是X和Y的内容 X-inputY-input

输入空字符串(' ')时报错


excel有几个空单元格,所以有些值是空的,不能转换成float。当输入空字符串('')时,它会给出错误。