我正在尝试使用Keras实现一个神经网络.我的错误如下:



ERROR:层sequential_9的输入0与层:期望输入形状的轴-1值为2,但接收到形状为(25,1)的输入

输入条件:随机两组数据集,每个数据集有50个数据模式,在x1和x2两个维度上。一个数据集有0 <= x1 <= 3和0 <= x2 <= 3,目标为0,第二个数据集有6 <= x1 <= 9和6 <= x2 <= 9,目标为1。

下面是我的代码:

import tensorflow as tf
import numpy as np
import random
from tensorflow import keras
from keras.models import Sequential
from keras.layers import Dense
model = tf.keras.Sequential([keras.layers.Dense(units=4, input_shape=[2])])
model.add(Dense(units= 3, activation='relu'))
model.add(Dense(units= 1, activation='sigmoid'))
model.compile(optimizer='sgd', loss='mean_squared_error')
x1 = list(np.random.uniform(0,3,50))
x2 = list(np.random.uniform(0,3,50))
labels = [0 for i in range(50)]                                                 #target is set  to 0
          #concatenating the list with tother condition of <6<=9
x1 = x1+ list(np.random.uniform(6,9,50))                                        #Plotting the points between 6 to 9 and putting 50 random points 
x2 += list(np.random.uniform(6,9,50))
labels += [1 for i in range(50)]
x = np.append(x1, x2, axis= -1)
print (x)
x_train = np.array(x, dtype='float64')
tr = np.array(t, dtype='float64'

)

我也试过其他可能的语法,比如:

x1 = []
x2 = []
t = []
for i in range(50):
x1.append(random.uniform(0,3))
x2.append(random.uniform(0,3))
for i in range(50):
x1.append(random.uniform(6,9))
x2.append(random.uniform(6,9))
for i in range(50):
t.append(0)
for i in range(50):
t.append(1)
x1 = np.random.uniform([0,3,size=(50,2))
x2 = np.random.uniform([6,9,size=(50,2))

在最后一行显示错误,即(model.fit)行。

有很多事情我不明白。你没有。fit()行,所以我不知道你在问什么。您反复创建数组,然后重写它们。您还有几个未使用的变量(为什么?)最后从keras和tensorflow中导入。Keras,它们是完全独立的包。这是我认为你想做的事情的一个尝试:

import tensorflow as tf, numpy as np
#Data
X = np.random.random((10_000,2)) #10_000 2-unit vectors. 
Y = np.random.random((10_000,))  #10_000 numbers. 
#Model
model = tf.keras.Sequential([
tf.keras.layers.Dense(4),
tf.keras.layers.Dense(3,'relu'),
tf.keras.layers.Dense(1,'sigmoid'),
])
model.compile('sgd','mse')
#Training
model.fit(X,Y,256,10)

相关内容

最新更新