我试图建立一个机器学习模型,从一系列数字中预测一个数字.我使用的是Tensorflow的keras API的序列模型.

你可以想象我的数据集是这样的:

Index x data y data
0 np.ndarray(shape (1209278,) ) numpy.float32
1 np.ndarray(shape (1211140,) ) numpy.float32
2 np.ndarray(shape (1418411,) ) numpy.float32
3 np.ndarray(shape (1077132,) ) numpy.float32
... ... ...

This was my first attempt:

我try 使用一个包含numpy ndarray的numpy ndarray作为扩展数据,它最终包含浮点值,如下所示:

array([
    array([3.59280851, 3.60459062, 3.60459062, ..., 4.02911493])
    array([3.54752101, 3.56740332, 3.56740332, ..., 4.02837855])
    array([3.61048168, 3.62152741, 3.62152741, ..., 4.02764217])
])

我的y数据是一个包含浮点的numpy数组,看起来像这样

array([2.9864411, 3.0562437, ... , 2.7750807, 2.8712902], dtype=float32)

但当我try 使用model.fit()训练模型时,它产生了以下错误:

ValueError: Failed to convert a NumPy array to a Tensor (Unsupported object type numpy.ndarray).

我通过问一个与此相关的问题来解决这个错误:

My latest attempt:

[
    array([3.59280851, 3.60459062, 3.60459062, ..., 4.02911493])
    array([3.54752101, 3.56740332, 3.56740332, ..., 4.02837855])
    array([3.61048168, 3.62152741, 3.62152741, ..., 4.02764217])
]

我没有动我的y数据,所以是一堆浮点数据.

ValueError: Data cardinality is ambiguous:
  x sizes: 1304593, 1209278, 1407624, ...
  y sizes: 46
Make sure all arrays contain the same number of samples.

如您所见,我的x数据由具有不同形状的数组组成.

Question:

我猜想Tensorflow试图使用我的数组列表作为multiple个输入.

但我不想使用我的x数据作为多个输入.

  • 数组([3.59280851,3.60459062,3.60459062,…])=&燃气轮机;2.8989773
  • 数组([3.54752101,3.56740332,3.56740332,…])=&燃气轮机;3.0893357
  • ...

How can I use a sequence of numbers to predict a single number in Tensorflow?

EDIT

总而言之,我认为我的问题相当笼统,如果你知道如何解决这个问题,应该很容易回答,不像我.

推荐答案

try 以下操作:

import numpy as np
import tensorflow as tf

# add additional dimension for lstm layer
x_train = np.asarray(train_set["x data"].values))[..., None] 
y_train = np.asarray(train_set["y data"]).astype(np.float32)

model = tf.keras.Sequential()
model.add(tf.keras.layers.LSTM(units=32))
model.add(tf.keras.layers.Dense(units=1))
model.compile(loss="mean_squared_error", optimizer="adam", metrics="mse")
model.fit(x=x_train,y=y_train,epochs=10)

或者,对于不同的序列长度,使用参差不齐的输入:

x_train = tf.ragged.constant(train_set["x data"].values[..., None]) # add additional dimension for lstm layer
y_train = np.asarray(train_set["y data"]).astype(np.float32)

model = tf.keras.Sequential()
model.add(tf.keras.layers.Input(shape=[None, x_train.bounding_shape()[-1]], batch_size=2, dtype=tf.float32, ragged=True))
model.add(tf.keras.layers.LSTM(units=32))
model.add(tf.keras.layers.Dense(units=1))
model.compile(loss="mean_squared_error", optimizer="adam", metrics="mse")
model.fit(x=x_train,y=y_train,epochs=10)

或:

x_train = tf.ragged.constant([np.array(list(v))[..., None] for v in train_set["x data"].values]) # add additional dimension for lstm layer

Python相关问答推荐

Python pint将1/华氏度转换为1/摄氏度°°

根据客户端是否正在传输响应来更改基于Flask的API的行为

在Django中重命名我的表后,旧表中的项目不会被移动或删除

如何重新组织我的Pandas DataFrame,使列名成为列值?

操作布尔值的Series时出现索引问题

Polars定制函数返回多列

无法在盐流道中获得柱子

时长超过24小时如何从Excel导入时长数据

多个布尔条件的`jax.lax.cond`等效项

使用loc计算特定行的平均值,loc找不到行值

我应该使用哪一个来判断python中枚举值的唯一性?

通过PyTorch中的MIN函数传递渐变

在行数据为向量的DataFrame上计算逐行更改

无法从文章复制Forking 图

如何在pandas DataFrame列中保持一个只增加的数字序列?

如何拟合返回2个输出的深度学习模型

try 使用双反斜杠将反斜杠替换为另一个符号,但失败

PANDA TO_DICT-按键列出行(_D)

删除GeoAxes子图中的顶部和右侧脊椎

查找polars框架列和字符串变量之间的相似性时出错