Ggs*_*Ggs 5 python numpy neural-network keras tensorflow
我是 Keras 新手,我正在尝试创建需要在纸牌游戏上学习的网络。它需要 93 个二进制输入,其中隐藏层有 40 个神经元和一个计算分数(从 0 到 25)的单个输出神经元。
model = Sequential()
model.add(Dense(input_dim=93, units=40, activation="sigmoid"))
model.add(Dense(units=2, activation="linear"))
sgd = optimizers.SGD(lr=0.01, clipvalue=0.5)
model.compile(loss="mse", optimizer=sgd, learning_rate=0.01)
Run Code Online (Sandbox Code Playgroud)
我首先尝试计算(进行前向传播)93 个输入
这是“s.toInputs()”
[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 1 0 1 1 0 1 1 1 1 0 1 1 1 1 0 1 1 1 1 0 1 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 1 0 0 0 0 1 0 1 0 0 0 0 0 1 1 0 0 1 1 0 0 1 0 0 0 0 1 1 0 1]
model.predict(np.array(s.toInputs())
Run Code Online (Sandbox Code Playgroud)
但我得到了错误
ValueError:检查时出错:预期dense_1_input具有形状(无,93)但得到形状为(93,1)的数组
如何传递正确的参数?
实际上s.toInputs()
应该是这样的
[[0,0,0 等...],[0,1,0 等...]]
基本上你必须有一个具有以下形状的数组:( n_batches
, n_attributes
)
你有 93 个属性,所以如果你使用的是tensorflow,这应该可以解决问题
np.array(s.toInputs()).reshape(-1, 93)
Run Code Online (Sandbox Code Playgroud)
完全工作的示例
model = Sequential()
model.add(Dense(input_dim=93, units=40, activation="sigmoid"))
model.add(Dense(units=2, activation="linear"))
sgd = optimizers.SGD(lr=0.01, clipvalue=0.5)
model.compile(loss="mse", optimizer=sgd, learning_rate=0.01)
# random data
n_batches = 10
data = np.random.randint(0,2,93*n_batches)
data = data.reshape(-1,93)
model.predict(data)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5461 次 |
最近记录: |