【问题标题】:tflearn 3d tensor - ValueError: Cannot feed value of shape (50, 15, 15)tflearn 3d 张量 - ValueError:无法输入形状值(50、15、15)
【发布时间】:2018-06-07 15:39:01
【问题描述】:

第一次遇到这样的问题。测试 tflearn 的神经网络给出错误。尝试测试此代码时,Python 会生成错误。用 conv_2d 就没有这样的问题了。

我的代码: import numpy as np import random import tflearn from tflearn.layers.core import input_data, dropout, fully_connected from tflearn.layers.conv import conv_3d, max_pool_3d from tflearn.layers.estimator import regression

trainX = [[[random.randint(0,3) for col in range(15)] for row in range(15)] for x in range(50)]
testX = [[[random.randint(0,3) for col in range(15)] for row in range(15)] for x in range(10)]

trainY = [[0,1] for x in range(100)]
testY = [[0,1] for x in range(10)]


idnn = 'test_cnn'

network = input_data(shape=[None, 15, 15,15, 1])
network = conv_3d(network, 10, 3, activation='relu')

network = max_pool_3d(network, 2)
network = conv_3d(network, 32, 3, activation='relu')
network = conv_3d(network, 32, 3, activation='relu')

network = max_pool_3d(network, 2)
network = fully_connected(network, 512, activation='relu')
network = dropout(network, 0.5)
network = fully_connected(network, 2, activation='softmax')
network = regression(network, optimizer='adam',
                     loss='categorical_crossentropy',
                     learning_rate=0.001)



# Train using classifier
model = tflearn.DNN(network, tensorboard_verbose=0)
model.fit(trainX, trainY, n_epoch=10, shuffle=True, validation_set=(testX, testY),
          show_metric=True, batch_size=5, run_id= idnn)    
pred = model.predict(testX)

这会在尝试测试代码时产生错误 tflearn。

ValueError:无法为张量“InputData/X:0”提供形状(50、15、15)的值,其形状为“(?、15、15、15、1)”

可能是什么问题?请有人帮忙。

【问题讨论】:

    标签: python networking machine-learning tensorflow tflearn


    【解决方案1】:

    您的 trainXtestX 具有形状 (50, 15, 15)。然而,在

    network = input_data(shape=[None, 15, 15,15, 1])
    

    您将输入的形状指定为 (None, 15, 15, 15, 1)。这些形状不匹配。 None 可以代表任何数字,但形状应该匹配。

    例如,您可以将 trainXtestX 设为形状 (50, 15, 15,15,1)。

    【讨论】:

      【解决方案2】:

      我们来看看,什么是 conv_3d 网络?

      tflearn 文档中有一条信息。

      输入

      5-D Tensor [batch, in_depth, in_height, in_width, in_channels].

      输出

      5-D Tensor [filter_depth, filter_height, filter_width, in_channels, out_channels].
      

      trainXtestX 数据的大小应该相同。因为您使用的是validation_set 中的testX 数据。

      您的trainXtestX 数据看起来像二维数据集。 50x(15,15), 10x(15,15) 如果您想使用 conv_3d,您必须使 traintest 数据的大小相同。 (50x(15,15), 50x(15,15))。

      我还看到您的目标数据 trainY 与您的火车数据 trainX 的大小不同。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-04-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-11-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多