【问题标题】:How to parse an array with a neural network in python using keras?python - 如何使用keras在python中解析带有神经网络的数组?
【发布时间】:2021-05-16 15:52:22
【问题描述】:

我想知道如何制作一个能够将数组的内容与输出值相关联的最小神经网络,然后能够预测相同的事情,但对于其他数组。当我对第一层中的每个输入数据使用一行和一个神经元的数组对其进行测试时,它可以正常工作,但是当使用多行的数组时,我会出错。

我附上我的代码:

import numpy as np
from keras.models import Sequential
from keras.layers.core import Dense

s1 = np.array([[1,1,1],
               [0,0,0],
               [1,1,1]])


s2 = np.array([[1,0,1],
               [1,0,1],
               [1,0,1]])

s3 = np.array([[1,1,1],
               [1,1,1],
               [1,1,1]])

s4 = np.array([[0,0,0],
               [0,1,0],
               [0,0,0]])
training_data = np.array([s1,s2,s3,s4])



target_data = np.array([[0],[0],[1],[1]], "float32")

model = Sequential()
model.add(Dense(16, input_dim=(len(s1[:,0])*len(s1[0,:])), activation='relu'))
model.add(Dense(1, activation='sigmoid'))

model.compile(loss='mean_squared_error',
              optimizer='adam',
              metrics=['binary_accuracy'])

model.fit(training_data, target_data, epochs= 43)

# evaluate the model
scores = model.evaluate(training_data, target_data)
print("\n%s: %.2f%%" % ("Efectividad", scores[1]*100))

#prediction of future values
eject =  np.array([[1,1,1],
                   [0,1,0],
                   [1,1,1]])



print (model.predict(eject).round())

【问题讨论】:

  • 请添加您的错误信息

标签: python-3.x machine-learning keras


【解决方案1】:

您的代码中可能存在两个问题: 如果您无法训练模型,则可以尝试使用 flatten() 作为第一个输入层。

喜欢

model = Sequential()
model.add(Flatten())
model.add(Dense(16, activation='relu'))
model.add(Dense(1, activation='sigmoid'))

model.compile(loss='mean_squared_error',
              optimizer='adam',
              metrics=['binary_accuracy'])

model.fit(training_data, target_data, epochs= 43)

# evaluate the model
scores = model.evaluate(training_data, target_data)
print("\n%s: %.2f%%" % ("Efectividad", scores[1]*100))

如果在预测时发生错误,那么这将是因为 model.predict() 方法需要一个批次作为输入而不是单个实例,因此在您的情况下,您需要按如下方式重塑您的弹出数组:

eject =  np.array([[1,1,1],
               [0,1,0],
               [1,1,1]])
eject=eject.reshape(1,3,3)
print (model.predict(eject))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-21
    • 2019-08-25
    • 1970-01-01
    • 1970-01-01
    • 2017-05-24
    • 2020-11-05
    • 1970-01-01
    相关资源
    最近更新 更多