我已将机器学习的输入数据设为 csv 文件。数据是二维数组输入和标签 示例
[[[55:32:1:23:41:243:255:11:182:192:231:201],"播放"]
[[23:222:225],“谈话”]
[[[23:132:215:111:29:192],“谈话”]
[55:32:1:23:41:243:255:11:182:192:231:201] | 玩 |
[23:222:225] | 谈话 |
我尝试使用以下代码进行训练
import tensorflow as tf
import numpy as np
np.set_printoptions(precision=3, suppress=True)
import pandas as pd
from tensorflow.keras import layers
from tensorflow.keras.layers.experimental import preprocessing
import io
data = pd.read_csv('./newTest4.csv', header=None)
data_features=data.copy()
data_labels=data_features.pop(0)
data_features=np.array(data_features)
data_labels=np.array(data_labels)
data_labels
data_model=tf.keras.Sequential ([
layers.Dense(64),
layers.Dense(1)
])
data_model.compile(loss=tf.losses.MeanSquaredError(),optimizer=tf.optimizers.Adam())
data_model.fit(data_features,data_labels,epochs=100)
但是输出是
UnimplementedError: Cast string to float is not supported
[[node mean_squared_error/Cast (defined at <ipython-input-18-ce25e735eaa4>:1) ]] [Op:__inference_train_function_1561]
Function call stack:
train_function
答案 0 :(得分:1)
您需要一种模型可以预测输出的方法。如果您要预测的字符串数量固定,则必须将每个唯一的字符串映射到一个二进制变量。
一个例子是一个二维向量,其中第一个维度代表“玩”,第二个维度代表“谈话”。
您的数据如下所示:
[[[55:32:1:23:41:243:255:11:182:192:231:201],[1,0]] #“玩”,不“说话”
[[23:222:225], [0,1]] # 没有“播放”、“谈话”
现在,模型可以学习预测输出是 [1,0](播放)还是 [0,1](谈话)。
这种表示被称为one-hot encoding,你可以在this blogpost中阅读它!
答案 1 :(得分:0)
您不能将类别作为字符串来训练模型。而是将每个字符串编码为唯一的整数值。
有一篇关于如何编码分类数据的博客文章。检查3 Ways to Encode Categorical Variables for Deep Learning。