You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Keras构建LSTM序列分类模型时遇Unicode解码错误求助

LSTM模型拟合时的Unicode解码错误排查

问题背景

用Keras构建LSTM神经网络做序列分类任务,拟合模型时触发错误。已确认LSTM的input_shape正确(已转成3D张量),但无法理解错误信息,无法推进。输入数据为CSV文件,第0列是时间帧,无需使用。

数据处理代码

# 加载电压数据和balanceadorOn值
x = pd.read_csv('5 abril 2022.csv', usecols=[1], engine='python')
x = x.values
y = pd.read_csv('5 abril 2022.csv', usecols=[2], engine='python')
y = y.values

# 归一化电压数据
scaler = MinMaxScaler(feature_range=(0, 1))
x = scaler.fit_transform(x)

# 将输入数据重塑为LSTM要求的3D格式
x = x.reshape(1,len(x),1)

模型构建代码

# 创建LSTM模型
model = Sequential()
model.add(LSTM(4,activation='relu', input_shape=(len(x),1)))
model.add(Dense(1))
model.compile(optimizer='adam', loss='mse')
model.fit(x,y,epochs = 100, batch_size = 1,verbose=2)

错误信息

> File "_pydevd_bundle/pydevd_cython.pyx", line 532, in
> _pydevd_bundle.pydevd_cython.PyDBFrame._handle_exception   File "C:\Program
> Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.3568.0_x64__qbz5n2kfra8p0\lib\linecache.py",
> line 30, in getline
>     lines = getlines(filename, module_globals)   File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.3568.0_x64__qbz5n2kfra8p0\lib\linecache.py",
> line 46, in getlines
>     return updatecache(filename, module_globals)   File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.3568.0_x64__qbz5n2kfra8p0\lib\linecache.py",
> line 137, in updatecache
>     lines = fp.readlines()   File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.3568.0_x64__qbz5n2kfra8p0\lib\codecs.py",
> line 322, in decode
>     (result, consumed) = self._buffer_decode(data, self.errors, final) UnicodeDecodeError: 'utf-8' codec can't decode byte 0xa1 in position
> 1465: invalid start byte
> Traceback (most recent call last):   File "C:\Program
> Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.3568.0_x64__qbz5n2kfra8p0\lib\runpy.py",
> line 197, in _run_module_as_main
>     return _run_code(code, main_globals, None,   File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.3568.0_x64__qbz5n2kfra8p0\lib\runpy.py",
> line 87, in _run_code
>     exec(code, run_globals)   File "c:\program files\microsoft visual studio\2022\community\common7\ide\extensions\microsoft\python\core\debugpy\__main__.py",
> line 45, in <module>
>     cli.main()   File "c:\program files\microsoft visual studio\2022\community\common7\ide\extensions\microsoft\python\core\debugpy/..\debugpy\server\cli.py",
> line 444, in main
>     run()   File "c:\program files\microsoft visual studio\2022\community\common7\ide\extensions\microsoft\python\core\debugpy/..\debugpy\server\cli.py",
> line 285, in run_file
>     runpy.run_path(target_as_str, run_name=compat.force_str("__main__"))   File "C:\Program
> Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.3568.0_x64__qbz5n2kfra8p0\lib\runpy.py",
> line 288, in run_path
>     return _run_module_code(code, init_globals, run_name,   File "C:\Program
> Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.3568.0_x64__qbz5n2kfra8p0\lib\runpy.py",
> line 97, in _run_module_code
>     _run_code(code, mod_globals, init_globals,   File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.3568.0_x64__qbz5n2kfra8p0\lib\runpy.py",
> line 87, in _run_code
>     exec(code, run_globals)   File "C:\Users\34670\Desktop\UBU\Doctorado\Python\Redes
> Neuronales\Balanceador01\Balanceador01.py", line 54, in <module>  
> File "_pydevd_bundle/pydevd_cython.pyx", line 1366, in
> _pydevd_bundle.pydevd_cython.SafeCallWrapper.__call__   File "_pydevd_bundle/pydevd_cython.pyx", line 322, in
> _pydevd_bundle.pydevd_cython.PyDBFrame.trace_exception   File "_pydevd_bundle/pydevd_cython.pyx", line 452, in
> _pydevd_bundle.pydevd_cython.PyDBFrame.handle_user_exception   File "_pydevd_bundle/pydevd_cython.pyx", line 535, in
> _pydevd_bundle.pydevd_cython.PyDBFrame._handle_exception   File "C:\Program
> Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.3568.0_x64__qbz5n2kfra8p0\lib\linecache.py",
> line 30, in getline
>     lines = getlines(filename, module_globals)   File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.3568.0_x64__qbz5n2kfra8p0\lib\linecache.py",
> line 46, in getlines
>     return updatecache(filename, module_globals)   File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.3568.0_x64__qbz5n2kfra8p0\lib\linecache.py",
> line 137, in updatecache
>     lines = fp.readlines()   File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.3568.0_x64__qbz5n2kfra8p0\lib\codecs.py",
> line 322, in decode
>     (result, consumed) = self._buffer_decode(data, self.errors, final) UnicodeDecodeError: 'utf-8' codec can't decode byte 0xa1 in position
> 1465: invalid start byte

问题原因与解决方案

核心原因

这个错误和LSTM模型逻辑无关,是调试器(PyDev/VS Code Debugger)读取脚本文件时,遇到非UTF-8编码的字符。错误中的byte 0xa1对应Latin-1编码的¡字符,说明你的脚本文件Balanceador01.py不是以UTF-8编码保存的。

解决步骤

  1. 重新编码脚本文件
    用VS Code、Notepad++等编辑器打开脚本,将编码改为UTF-8后保存:

    • VS Code:点击右下角编码标识(如"ISO-8859-1")→ 选择"通过编码保存"→ 选"UTF-8"。
  2. 规避调试器问题
    如果暂时无法修改编码,尝试直接运行脚本(不使用调试模式),该错误通常仅在调试时触发,正常运行不受影响。

  3. CSV文件编码排查(可选)
    虽然错误指向脚本,但可额外确认CSV文件编码,读取时指定编码参数:

    x = pd.read_csv('5 abril 2022.csv', usecols=[1], engine='python', encoding='latin-1')
    y = pd.read_csv('5 abril 2022.csv', usecols=[2], engine='python', encoding='latin-1')
    

额外优化建议

  • 你当前用loss='mse'(均方误差),但序列分类任务通常用binary_crossentropy(二分类)或categorical_crossentropy(多分类),输出层需添加对应激活函数:
    model.add(Dense(1, activation='sigmoid'))
    model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
    
  • 输入数据形状x.reshape(1, len(x), 1)意味着只有1个样本,训练效果极差。建议用滑动窗口将序列分割为多个样本,每个样本为一段连续子序列。

内容的提问来源于stack exchange,提问作者bardulia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 04:06:24