# Обучение модель предсказывать, насколько хорошо последовательности будут работать для РНК-интерференции.
import deepchem as dc
import tensorflow as tf
import tensorflow.keras.layers as layers
import matplotlib.pyplot as plot
# Построение модели.
features = tf.keras.Input(shape=(21, 4))
prev = features
for i in range(2):
prev = layers.Conv1D(filters=10, kernel_size=10, activation=tf.nn.relu, padding='same')(prev)
prev = layers.Dropout(rate=0.3)(prev)
output = layers.Dense(units=1, activation=tf.math.sigmoid)(layers.Flatten()(prev))
keras_model = tf.keras.Model(inputs=features, outputs=output)
model = dc.models.KerasModel(
keras_model,
loss=dc.models.losses.L2Loss(),
batch_size=1000,
model_dir='rnai')
# Загружаем данные для обучения.
train = dc.data.DiskDataset('train_siRNA')
valid = dc.data.DiskDataset('valid_siRNA')
# Обучение модель, отслеживая ее производительность в наборах данных для обучения и проверки.
metric = dc.metrics.Metric(dc.metrics.pearsonr, mode='regression')
for i in range(20):
model.fit(train, nb_epoch=10)
print(model.evaluate(train, [metric])['pearsonr'])
print(model.evaluate(valid, [metric])['pearsonr'])