制作训练数据
import random
import numpy as np
x_train = []
x1_train = []
y_train = []
atoms = [0,1]
p = [0.6,0.4]
for i in range(1000):
x_train.append([np.random.choice(atoms, p=p),np.random.choice(atoms, p=p)])
for i in range(1000):
x1_train.append([np.random.choice(atoms, p=p),np.random.choice(atoms, p=p)])
for i in x_train:
if 1 in i:
y_train.append([1])
else:
y_train.append([0])
转换为 numpy 数组以使它们可以被 keras 使用
x_train = np.array(x_train)
x1_train = np.array(x_train)
y_train = np.array(y_train)
import tensorflow as tf
对数据进行归一化,让模型更好的使用
x_train = tf.keras.utils.normalize(x_train, axis = 1)
x1_train = tf.keras.utils.normalize(x_train, axis = 1)
y_train = tf.keras.utils.normalize(y_train, axis = 0)
制作具有密集层的模型
model = tf.keras.models.Sequential()
model.add(tf.keras.layers.Flatten())
model.add(tf.keras.layers.Dense(128 , activation = tf.nn.relu))
model.add(tf.keras.layers.Dense(128, activation = tf.nn.relu))
model.add(tf.keras.layers.Dense(128, activation = tf.nn.relu))
model.add(tf.keras.layers.Dense(128, activation = tf.nn.relu))
model.add(tf.keras.layers.Dense(128, activation = tf.nn.relu))
model.add(tf.keras.layers.Dense(1, activation = tf.nn.sigmoid))
在 3 个列表上编译和训练模型
model.compile(optimizer='adam',
loss='mean_absolute_percentage_error',
metrics=['accuracy'])
model.fit(x_train, x1_train, y_train, epochs = 10)
试试这个
from keras.layers import Input, Dense
from keras.models import Model
import keras
inputs1 = Input(shape=(784,))
inputs2 = Input(shape=(784,))
outputs_1 = Dense(64, activation='relu')(inputs1)
outputs_2 = Dense(64, activation='relu')(inputs2)
outputs = keras.layers.Concatenate([outputs_1, outputs_2])
predictions = Dense(10, activation='softmax')(outputs)
model = Model(inputs=[inputs1,inputs2], outputs=predictions)
model.compile(optimizer='rmsprop',
loss='categorical_crossentropy',
metrics=['accuracy'])
model.fit([data1, data2], labels)
@irishabha 的上述回答给出了以下错误:
Traceback (most recent call last): File "...\main.py", line 20, in <module> predictions = Dense(10, activation='softmax')(outputs) File "...\Python\Python310\lib\site-packages\keras\src\utils\traceback_utils.py", line 123, in error_handler raise e.with_traceback(filtered_tb) from None File "...\Python\Python310\lib\site-packages\keras\src\layers\layer.py", line 738, in __call__ raise ValueError( ValueError: Only input tensors may be passed as positional arguments. The following argument value should be passed as a keyword argument: <Concatenate name=concatenate, built=False> (of type <class 'keras.src.layers.merging.concatenate.Concatenate'>)