如何在 Tensorflow 中创建虚拟模型

数据挖掘 机器学习 神经网络 深度学习 张量流 学习
2022-02-27 08:45:37

我是机器学习的新手。

tflearn我在某处发现了这个例子。这是程序的一部分,我们在训练之前初始化一个虚拟模型。在示例中,有 4 个输入层和 2 个输出层。我不懂任何术语,但我运行了该程序并且它有效。

def neural_network_model(input_size):
    network = input_data(shape=[None, input_size, 1], name='input')

    network = fully_connected(network, 128, activation='relu')
    network = dropout(network, 0.8)

    network = fully_connected(network, 256, activation='relu')
    network = dropout(network, 0.8)

    network = fully_connected(network, 512, activation='relu')
    network = dropout(network, 0.8)

    network = fully_connected(network, 256, activation='relu')
    network = dropout(network, 0.8)

    network = fully_connected(network, 128, activation='relu')
    network = dropout(network, 0.8)

    network = fully_connected(network, 2, activation='softmax')
    network = regression(network, optimizer='adam', learning_rate=LR, loss='categorical_crossentropy', name='targets')
    model = tflearn.DNN(network, tensorboard_dir='log')

    return model

我想重用这个函数来创建一个模型,我将使用具有 24 个输入层和 4 个输出层的数据进行训练,但它给了我以下错误:

无法为形状为“(?, 2)”的张量“targets/Y:0”提供形状 (64, 4) 的值

有人能解释一下上面所有的术语是什么意思吗?我应该改变什么以适应我的 24 x 4 层?

1个回答

原因是在您的模型中,您已经指定了要改变的输入大小,正如您的函数参数所指定的那样。您必须按如下方式更改代码:

def neural_network_model(input_size, output_size):
network = input_data(shape=[None, input_size, 1], name='input')

network = fully_connected(network, 128, activation='relu')
network = dropout(network, 0.8)

network = fully_connected(network, 256, activation='relu')
network = dropout(network, 0.8)

network = fully_connected(network, 512, activation='relu')
network = dropout(network, 0.8)

network = fully_connected(network, 256, activation='relu')
network = dropout(network, 0.8)

network = fully_connected(network, 128, activation='relu')
network = dropout(network, 0.8)

network = fully_connected(network, output_size, activation='softmax')
network = regression(network, optimizer='adam', learning_rate=LR, loss='categorical_crossentropy', name='targets')
model = tflearn.DNN(network, tensorboard_dir='log')

return model

您已经硬编码了输出大小,即 2,您必须将其更改为变量,并且在调用期间,您必须指定新输出的大小,即 4。