【问题标题】:How to deal with data Size error in tensorflow如何处理tensorflow中的数据大小错误
【发布时间】:2021-01-08 13:40:25
【问题描述】:

我正在制作一个张量流模型,它采用一组 6 个值并输出一个。(测试和学习目的) 代码如下:

import tensorflow as tf
import numpy as np
from tensorflow import keras
import pandas as pd
a=0
model = keras.Sequential()
model.add(keras.layers.Dense(units=6, input_shape=(6,)))
model.compile(optimizer='sgd',loss='mean_squared_error')
x=np.array(((1.0,1.0,1.0,1.0,1.0,1.0),(2.0,2.0,2.0,2.0,2.0,2.0),(3.0,3.0,3.0,3.0,3.0,3.0),(4.0,4.0,4.0,4.0,4.0,4.0)))
y=np.array((1.0,2.0,3.0,4.0))
print(x)
model.fit(x,y,epochs=100)
while True:
    a=float(input())
    print(model.predict(np.array((a,a,a,a,a,a))))

我收到以下错误:

    ValueError: Input 0 of layer sequential is incompatible with the layer: expected axis -1 of input shape to have value 6 but received input with shape [None, 1]

当我找到输入给模块的形状时,我得到了正确的形状,即 (6,0)。 任何形式的帮助表示赞赏。谢谢。

【问题讨论】:

    标签: python pandas numpy tensorflow keras


    【解决方案1】:

    您可能希望在密集层之前使用keras.layer.Input() 层,因为密集层的大小与您的输入相同,但模型希望最后一层与您的 y 值的大小相匹配,即 @987654322 @。该层必须匹配您的输入和输出,因此您需要一个额外的层。一个用于输入,一个用于输出。

    【讨论】:

      【解决方案2】:

      您有 6 个输出神经元,但您的目标具有 (4, 1) 形状。使用 1 个输出神经元再试一次,使输出和标签的形状匹配:

      import numpy as np
      from tensorflow import keras
      a=0
      model = keras.Sequential()
      model.add(keras.layers.Dense(units=1, input_shape=[6]))
      model.compile(optimizer='sgd',loss='mean_squared_error')
      x=np.array(((1.0,1.0,1.0,1.0,1.0,1.0),
                  (2.0,2.0,2.0,2.0,2.0,2.0),
                  (3.0,3.0,3.0,3.0,3.0,3.0),
                  (4.0,4.0,4.0,4.0,4.0,4.0)))
      y=np.array((1.0,2.0,3.0,4.0))
      print(x)
      model.fit(x,y,epochs=100)
      
      4/4 [==============================] - 0s 998us/sample - loss: 1.7085e-05
      Epoch 98/100
      4/4 [==============================] - 0s 2ms/sample - loss: 1.6974e-05
      Epoch 99/100
      4/4 [==============================] - 0s 748us/sample - loss: 1.6863e-05
      Epoch 100/100
      4/4 [==============================] - 0s 748us/sample - loss: 1.6752e-05
      

      或者,保留 6 个神经元,但在之后添加另一层,只有 1 个输出神经元。

      import numpy as np
      from tensorflow import keras
      a=0
      model = keras.Sequential()
      model.add(keras.layers.Dense(units=6, input_shape=[6]))
      model.add(keras.layers.Dense(units=1))
      model.compile(optimizer='sgd',loss='mean_squared_error')
      x=np.array(((1.0,1.0,1.0,1.0,1.0,1.0),
                  (2.0,2.0,2.0,2.0,2.0,2.0),
                  (3.0,3.0,3.0,3.0,3.0,3.0),
                  (4.0,4.0,4.0,4.0,4.0,4.0)))
      y=np.array((1.0,2.0,3.0,4.0))
      print(x)
      model.fit(x,y,epochs=100)
      

      【讨论】:

        猜你喜欢
        • 2018-03-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-08-06
        • 1970-01-01
        • 2016-07-30
        • 2019-11-29
        • 1970-01-01
        相关资源
        最近更新 更多