【问题标题】:error : InvalidArgumentError: StringToNumberOp could not correctly convert string: [4 [Op:StringToNumber]错误:InvalidArgumentError:StringToNumberOp 无法正确转换字符串:[4 [Op:StringToNumber]
【发布时间】:2021-02-14 21:44:01
【问题描述】:

有人可以帮我解决这个错误吗: ~\anaconda3\lib\site-packages\six.py in raise_from(value, from_value)

InvalidArgumentError: StringToNumberOp could not correctly convert string: [4 [Op:StringToNumber]

我知道我应该将字符串数组转换为浮点数组,但我现在不知道如何?

首先我从我创建的 txt 文件创建一个数据集

    data = np.genfromtxt('C:\image echantillon\DATATR',delimiter =',', dtype=str)
    X=data[:,0:3]
    #X_train = np.asarray(X)
    tf.strings.to_number(X, out_type=tf.float32)
    Y=data[:,3:]
    tf.strings.to_number(Y, out_type=tf.float32)
    
    

我尝试使用 tf.strings.to_number(x, out_type=tf.float32) 转换该数据

之后我创建了一个顺序模型

    model = Sequential()
    model.add(Dense(8, input_dim=3, kernel_initializer='he_uniform', activation='relu'))
    model.add(Dense(8, kernel_initializer='he_uniform', activation='relu'))
    model.add(Dense(9, activation='sigmoid'))
    model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
    
    ````
my file look like this 
``

    ['[4' ' 3' ' 5'] [' 1' ' 0' ' 0' ' 0' ' 0' ' 0' ' 0' ' 0' ' 0]']
    ['[4' ' 3' ' 5'] [' 1' ' 0' ' 0' ' 0' ' 0' ' 0' ' 0' ' 0' ' 0]']
    ['[4' ' 3' ' 5'] [' 1' ' 0' ' 0' ' 0' ' 0' ' 0' ' 0' ' 0' ' 0]']
    ['[4' ' 3' ' 4'] [' 1' ' 0' ' 0' ' 0' ' 0' ' 0' ' 0' ' 0' ' 0]']
    ['[4' ' 3' ' 4'] [' 1' ' 0' ' 0' ' 0' ' 0' ' 0' ' 0' ' 0' ' 0]']
    ['[4' ' 3' ' 3'] [' 1' ' 0' ' 0' ' 0' ' 0' ' 0' ' 0' ' 0' ' 0]']
    ['[4' ' 3' ' 3'] [' 1' ' 0' ' 0' ' 0' ' 0' ' 0' ' 0' ' 0' ' 0]']``
   

   

【问题讨论】:

    标签: python tensorflow keras


    【解决方案1】:

    您应该更改引号的位置。

    更改文件中的所有行

    ['[4' ' 3' ' 5'] [' 1' ' 0' ' 0' ' 0' ' 0' ' 0' ' 0' ' 0' ' 0]']
    

    到:

    [[' 4' ' 3' ' 5'] [' 1' ' 0' ' 0' ' 0' ' 0' ' 0' ' 0' ' 0' ' 0']]
    

    【讨论】:

    • 请问我该怎么做?
    • 我需要有关文件或文件本身的更多信息才能详细回答。最耗时的方法是手工完成。如果它是文本文件、csv 或类似文件,那么您可以使用 Python 将其自动化。
    • 好的,我用这段代码创建我的文件 ```` #image.save('image.bmp') IM=np.array(image) im = cv2.imread('image.bmp ') img=Image.open('Image.bmp') ###################### #########创建文件datatr# ############### #class mer M = img.crop((0,50,20,70)) M.show() cv2.waitKey(0) for j in range (20): 对于范围内的 i(20): [r,v,b] = M.getpixel((i,j)) f=open('C:\image echantillon\DATATR', 'a') f.写(str([r,v,b,1,0,0,0,0,0,0,0,0])+"\n" ) f.close()
    • 当您以这种方式编写文件时f.write(str([r,v,b,1,0,0,0,0,0,0,0,0])+"\n" ) 它不会看起来像这样['[4' ' 3' ' 5'] [' 1' ' 0' ' 0' ' 0' ' 0' ' 0' ' 0' ' 0' ' 0]']。在data = np.genfromtxt('C:\image echantillon\DATATR',delimiter =',', dtype=str) 中,您将逗号设置为分隔符。但是您不在文件中写逗号。抱歉,我需要你的全部代码或至少是原始文件C:\image echantillon\DATATR,否则我帮不了你。
    • 我无法发布所有代码,因为它太长了(cmets 不允许这样做)但上面的代码是创建文件的重要部分img=Image.open('Image.bmp') ####################### #########creation fichier datatr################# #classe mer M = img.crop((0,50,20,70)) M.show() cv2.waitKey(0) for j in range(20): for i in range(20): [r,v,b] = M.getpixel((i,j)) f=open('C:\image echantillon\DATATR', 'a') f.write(str([r,v,b,1,0,0,0,0,0,0,0,0])+"\n" ) f.close()
    猜你喜欢
    • 2012-09-20
    • 1970-01-01
    • 2022-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多