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

Python/TensorFlow:如何将文本文件中字符串格式2D数组转为TF可用格式

错误根源

你代码中dataframe['X'].apply(literal_eval).apply(np.array).values返回的是一个dtype=object的一维NumPy数组,每个元素是独立的二维NumPy数组,TensorFlow无法直接将这种嵌套数组结构转换为张量。

修复方案

使用np.stack()将所有二维数组合并为一个统一维度的三维NumPy数组,即可正常转换为TensorFlow支持的张量格式。

完整可运行代码

import tensorflow as tf
import numpy as np
import pandas as pd
from ast import literal_eval

def df_to_dataset(dataframe):
    Y = tf.convert_to_tensor(dataframe['Y'].values)
    # 核心修改:用np.stack把零散的二维数组合并为三维数组
    X_arr = np.stack(dataframe['X'].apply(literal_eval).apply(np.array).values)
    X = tf.convert_to_tensor(X_arr)
    return tf.data.Dataset.from_tensor_slices((X, Y))

data = [[ 1, "[[0,1],[0,1]]" ] , [ 0 , "[[1,0],[1,0]]" ]]
df = pd.DataFrame(data, columns=['Y','X'])
dataset = df_to_dataset(df)
for feature in dataset.take(1):
    print(feature)

运行输出

(<tf.Tensor: shape=(2, 2), dtype=int64, numpy=
array([[0, 1],
       [0, 1]])>, <tf.Tensor: shape=(), dtype=int64, numpy=1>)

提示:如果后续用于CNN训练,通常需要补充通道维度,可在np.stack后添加X_arr = X_arr[..., np.newaxis],将数组形状调整为(样本数, 高度, 宽度, 1)符合CNN输入要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 22:42:03