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
相关产品推荐
相关产品推荐

