簡體   English   中英

在 function 中使用 keras 神經網絡

[英]Using keras neural network in function

我正在嘗試使用 keras 從論文中實現算法,他們訓練神經網絡以使用有限的數據點來逼近數學 function f(x)。 我希望神經網絡的輸入為 x 和 output 的形式為 f(x) = 1 + xN(x),其中 N(x) 是來自最終密集層的值。

我知道如何使它適用於 output f(x) = N(x),但我只是不知道如何調整網絡以獲得 f(x) = 1 + xN(x)。 有人能幫我嗎?

這是我當前的代碼

from keras.layers import Input, Dense, Add, Multiply
from keras.models import Model
import keras.backend as K

import matplotlib.pyplot as plt

import numpy as np

import time

def f(x):
    return x**2

Xtrain = np.linspace(0, 1, 10)
ytrain = np.array([f(x) for x in Xtrain])

X = np.linspace(0, 2, 100)
y = np.array([f(x) for x in X])

input = Input(shape=(1,))
init = np.ones(shape=(10, 1))
init = K.variable(init)
hidden = input
hidden = Dense(8, activation='relu')(hidden)
out = Dense(1, activation='linear')(hidden)

out = Add()([init, Multiply()([out, input])])

model = Model(inputs=input, outputs=out)
model.compile(loss='mean_squared_error', optimizer="adam")

tic = time.perf_counter()
model.fit(Xtrain, ytrain, epochs=1000, verbose=1)
toc = time.perf_counter()
print(f"Training time: {toc - tic:0.4f} seconds")

prediction = model.predict(X)
prediction = prediction.reshape((100,))

plt.figure(figsize=(10,5))
plt.plot(X, y, color='red', label='Analytical solution')
plt.plot(X, prediction, color='black', label = 'Prediction')
plt.scatter(Xtrain, ytrain, color='blue', label='Training points')
plt.legend()
plt.show()
plt.tight_layout()

在線崩潰

out = Add()([init, Multiply()([out, input])])

Add 層在兩個層之間以及一個層和一個數字/ndarray 之間工作。

你可以像這樣使用它:

init=np.ones(shape=(10, 1))

inp = Input(shape=(1,))
hidden = Dense(8, activation='relu')(inp)
out = Dense(1, activation='linear')(hidden)
mul=Multiply()([out, inp])
out = Add()([init, mul])
model = Model(inputs=inp, outputs=out)
model.compile(loss='mean_squared_error', optimizer="adam")

我檢查了它並且它有效。

順便說一下, input是一個內置的function,除非你想用,否則我不建議使用它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM