如何训练具有多个 3D 阵列的回归模型?

问题描述

我想用 3D 数组训练我的回归模型?我怎样才能在 Python 中做到这一点?你能指导我吗?实际上,我想通过输入多个 3D 数组来预测回归值。是否可以仅从多个 3d 数组中预测单个浮点数?谢谢

train.model((x1,x2,x3..xN),y 值).

其中 x1,..xN 是 3D 数组。 Y 仅输出单个浮点数。

解决方法

关键点是将 3D 样本重塑为平面 1D 样本。以下示例代码使用 tf.reshape 对输入进行整形,然后再将其馈送到常规密集网络,以便通过 tf.identity(无激活)回归到单个值输出。

%tensorflow_version 2.x
%reset -f

import tensorflow as tf
from   tensorflow.keras import *
from   tensorflow.keras.models import *
from   tensorflow.keras.layers import *
from   tensorflow.keras.callbacks import *

class regression_model(Model):
    def __init__(self):
        super(regression_model,self).__init__()
        self.dense1 = Dense(units=300,activation=tf.keras.activations.relu)
        self.dense2 = Dense(units=200,activation=tf.keras.activations.relu)
        self.dense3 = Dense(units=1,activation=tf.identity)

    @tf.function
    def call(self,x):
        h1 = self.dense1(x)
        h2 = self.dense2(h1)
        u  = self.dense3(h2) # Output
        return u

if __name__=="__main__":
    inp = [[[1],[2],[3],[4]],[[3],[3]]] # 2 samples of whatever shape
    exp = [[10],[12]] # Regress to sums for example'

    inp = tf.constant(inp,dtype=tf.float32)
    exp = tf.constant(exp,dtype=tf.float32)

    NUM_SAMPLES = 2
    NUM_VALUES_IN_1SAMPLE = 4
    inp = tf.reshape(inp,(NUM_SAMPLES,NUM_VALUES_IN_1SAMPLE))

    model = regression_model()
    model.compile(loss=tf.losses.MeanSquaredError(),optimizer=tf.optimizers.Adam(1e-3))
    
    model.fit(x=inp,y=exp,batch_size=len(inp),epochs=100)

    print(f"\nPrediction from {inp},will be:")
    print(model.predict(x=inp,steps=1))
# EOF

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...