AipythonGo
Dog-go
2020-08-07 11:48
采纳率: 57.1%
浏览 2.2k

报错:'utf-8' codec can't decode byte 0xd5 in position 98: invalid continuation byte

在运行下面代码的时候,报了错误:'utf-8' codec can't decode byte 0xd5 in position 98: invalid continuation byte
代码如下:

import os  
import numpy as np   
#import input_data     
#import model  


N_CLASSES = 2  # 2个输出神经元,[1,0] 或者 [0,1]猫和狗的概率
IMG_W = 208  # 重新定义图片的大小,图片如果过大则训练比较慢  
IMG_H = 208  
BATCH_SIZE = 32  #每批数据的大小
CAPACITY = 256  
MAX_STEP = 15000 # 训练的步数,应当 >= 10000
learning_rate = 0.0001 # 学习率,建议刚开始的 learning_rate <= 0.0001


def run_training():  

    # 数据集
    train_dir = 'D:/Python/data/DogVsCat/kaggle/train'   #My dir--20170727-csq  
    #logs_train_dir 存放训练模型的过程的数据,在tensorboard 中查看 
    logs_train_dir = 'D:/Python/data/DogVsCat/kaggle/'

    # 获取图片和标签集
    train, train_label = get_files(train_dir)  
    # 生成批次
    train_batch, train_label_batch = get_batch(train,  
                                                    train_label,  
                                                    IMG_W,  
                                                    IMG_H,  
                                                    BATCH_SIZE,   
                                                    CAPACITY)
    # 进入模型
    train_logits = inference(train_batch, BATCH_SIZE, N_CLASSES) 
    # 获取 loss 
    train_loss = losses(train_logits, train_label_batch)
    # 训练 
    train_op = trainning(train_loss, learning_rate)
    # 获取准确率 
    train__acc = evaluation(train_logits, train_label_batch)  
    # 合并 summary
    summary_op = tf.summary.merge_all()  
    sess = tf.Session()
    # 保存summary
    train_writer = tf.summary.FileWriter(logs_train_dir, sess.graph)  
    saver = tf.train.Saver()  

    sess.run(tf.global_variables_initializer())  
    coord = tf.train.Coordinator()  
    threads = tf.train.start_queue_runners(sess=sess, coord=coord)  

    try:  
        for step in np.arange(MAX_STEP):  
            if coord.should_stop():  
                    break  
            _, tra_loss, tra_acc = sess.run([train_op, train_loss, train__acc])  

            if step % 50 == 0:  
                print('Step %d, train loss = %.2f, train accuracy = %.2f%%' %(step, tra_loss, tra_acc*100.0))  
                summary_str = sess.run(summary_op)  
                train_writer.add_summary(summary_str, step)  

            if step % 2000 == 0 or (step + 1) == MAX_STEP:  
                # 每隔2000步保存一下模型,模型保存在 checkpoint_path 中
                checkpoint_path = os.path.join(logs_train_dir, 'model.ckpt')  
                saver.save(sess, checkpoint_path, global_step=step)  

    except tf.errors.OutOfRangeError:  
        print('Done training -- epoch limit reached')  
    finally:  
        coord.request_stop()
    coord.join(threads)  
    sess.close()  

# train
run_training()

在网上找了都不行,求解决。

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • qq_42409246
    qq_42409246 2020-08-07 14:38
    已采纳

    读取文件编码不统一可以尝试在代码后添加命令
    例如
    path = './PlayNow.ini'
    path_config.read(path,encoding='UTF-16')

    点赞 评论
  • caozhy

    无论如何还是编码的问题,包括py源代码的编码,py源代码里设置编码的代码,数据文件的编码,三者要统一。

    点赞 1 评论

相关推荐